Mockito Argument Captor Nedir? Nerede Kullanırız? — Java

Merhaba arkadaşlar,

Bugün sizlere bildiğim kadarıyla Mockito’nun Argument Captor sınıfını anlatacağım. Argument Captor, bulunduğumuz classtan farklı classların metodlarına aktarılan objeyi yakalamak amacıyla kullanılır. Böylece argümanlar için verify veya assertlerimizi yazabiliriz.

Örnek olarak düşünürsek servisimizde çağrılan metod içerisinde parametre veya parametreler üretip bu parametreler ile yeni bir obje oluşturduğumuzda bu objeyi başka bir classın metoduna aktardığımızı varsayalım, aktardığımız objeyi direkt olarak verify edebilir veya assert gerçekleştirebiliriz.

Örnek Kullanım:

Servis classımızda örnek bir obje ürettik ve bu obje ile farklı bir sınıf olan Repository’deki save metodunu çağırdık.

İşte tam olarak ArgumentCaptor bu ve benzeri durumlarda devreye girer, aşağıdaki örneğimizde save metodunu hangi obje ile çağırdığımızı yakalayabiliyoruz ve böylece sorunsuz şekilde verify ve assert işlemi gerçekleştirebiliyoruz.

Bu yazımızda nasıl argüman yakalayabileceğimizi inceledik, bildiklerimi olabildiğince anlatmaya çalıştım. Umarım faydalı olmuştur. Ek olarak;

Neden Argument Captor kullanmak önerilmiyor?
Yukarıdaki örneğimiz anlaşılabilir olması açısından yazılmıştır. Normal şartlarda bir objeyi set edip direkt o obje ile başka bir class çağrılmamalı set edilen obje başka bir classtan return edilmelidir. Argument Captor, çıkmaza girdiğimiz ve dönüşünde eforu büyük veya yazılmış bir kodun testi yoksa testi yazıp geçirebilmek amacıyla kullanılır. Mevcut yeni yazılmış kod için test aşamasında Argument Captor gereksinimi duyuyorsak aslında akışı doğru dizayn edememiş ve refactor edilmesi gereken bir kod yazmış oluyoruz. Bu sebepten dolayı Argument Captor kullanacağımızı farkettiğimizde kodumuzda eksiklik aramalıyız. :)

--

--

Software Engineer — https://www.linkedin.com/in/mehmetnuridemircan/

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store