Merhabalar bugünün programı şöyle:
- Balıklama Dalış
- Tanıtımlar
- İlk kaset
- Adeta Gerçek Bir Kesit
- İstiklal Marşı ve Kapanış
Eğer 3. parti web servisleri ile çalışıyor/veya çalışmak zorunda kalıyorsanız internetinizin olmadığı, rate limite takılabileceğiniz, cevap süresinin uzun olduğu veya
3.parti servisin kapattık hacı bugün beş saat diyerek cevap alamayabileceğiniz anlar olabilir. Test yazarken bu tür bağımlılıklardan kurtulmak için stubbing with vcr
.
Stub nedir?
Kısaca sahteleme diyebiliriz. Test yazarken bağımlılıkları gidermek için servis ile aynı sonucu döndüren bir methodla değiştirme işlemi
Vcr nedir?
HTTP etkileşimlerini kaydedip/kasete sarıp testleriniz esnasında hızlıca, aynı response ile defalarca kullanmanıza yarayan bir gem.
Kurulum
Vcr gem’ini ve kullanacağınız http kütüphanesine ait gem’i Gemfile ekleyin ve kurun. webmock, fakeweb, faraday, httparty gibi birçok aracı destekliyormuş vcr.
Bana oradan bir ayar çek
Bu arada benim verdiğim örnekler rspec için.
İlk Vcr Kaseti
Eğer blog_kaseti
daha önce oluşturulmamışsa ilk kez çalıştığında oluşacak eğer varsa kasetten okuyacak.
Bu test sonucunda spec/fixtures/vcr_cassettes/
dizini altında blog_kaseti.yml
dosyası oluştu. İçinde yapılan istekle ilgili bilgiler var.
Aynı sorguyu farklı cevaplar alacak şekilde farklı isimlerle kaydedebilirsiniz.
Tavsiyeler
Kasetin bozuk veya eski bir istek olmadığından emin olun. Mesela ben bir kez servisten gelen hatalı mesajı kaydedip ulan bozuk geliyor niye geliyor tribine girmiştim. Dalgınlık işte :/
Biz Protel’de rspec ile birlikte vcr gem’ini neredeyse her projede kullanıyoruz ve çok memnunuz sizinde bir göz atmanızı tavsiye ederim.