JUnit ile Servis Katmanı Testi-3

ArgumentCaptor kullanarak nasıl unit test yazabiliriz konusuna değineceğiz.

0 114

Öncelikle okumadıysanız eğer önceki yazıları da okumanızda fayda var.

Junit ile Controller Testi

JUnit ile Servis Katmanı Testi-1

JUnit ile Servis Katmanı Testi-2

Bu yazıda ArgumentCaptur kullanarak testlerimize yeni özellikler eklemeye çalışacağız. Servis katmanını tekrar hatırlayalım.

Service

 

Unit Test

Tek bir method üzerinden örnekleme yapacağım önceki yazıda yaptığımız methodlarda siz de gerekli refactor işlemlerini gerçekleştirebilirsiniz.

Not: verify kısmında önceki yazılarda olan kısımları yeni kodların daha net gözükmesi için eklemedim. Merak edenler önceki yazıdan kontrol edebilir.

Peki neden ArgumentCaptor’a ihtiyacımız var?

Bu sorunun cevabı için bir önceki yazıdan önceki versiyonu hatırlayalım. Aşağıdaki eski versiyonu incelediğimizde ‘save’ işlemi sırasında herhangi bir Realty objesiyle çağrıldığını doğrulmaya çalıştığımızı söylemiştik. Daha sonrasında ise id, title, province, status bilgilerini mockladığımız obje ile karşılaştırmıştık. Buradaki problem zaten kendi oluşturduğumuz objeyi yine kendi oluşturduğumuz obje ile doğrulamaya çalışmamız.

Asıl doğrulamamız gereken ise kod içerisinde bu objenin bir değişikliğe uğrayıp uğramadığıdır.

Hemen bunu anlatmaya çalıştığım sorunu örnekleyelim.

Yukarıdaki convert methodunu aşağıdaki gibi değiştireceğim.

Şimdi testi çalıştırıp sonucu görelim.

 

 

 

 

 

 

Test methodumuzun önceki haliyle aynı kodu çalıştırdığımıda ise aşağıdaki gibi testlerin geçtiğini göreceğiz.

Çünkü obje üzerinde manipülasyon oldu ve biz bu kaçırdık.

 

 

 

 

 

 

Nasıl Kullanabiliriz?

Aşağıdaki gibi iki şekilde de tanımlayıp kullanabilirsiniz.

Görüldüğü üzere verify() methodu ile beraber kullanılıyor.

Veriyi yakaladıktan(capture) sonra artık yukarıdaki gibi doğrulama işlemleri için kullanabilirsiniz.

 

Faydalı olması dileğiyle.

Email adresiniz yayınlanmayacaktır.