2013-02-08 6 views
19

olmaya yöntem param doğrulama? Böyle yollarla bunu yapmak için çalıştı:Mockito. <pre><code>void putObject(<T extends BaseEntity> param) </code></pre> <p></p> Ben bu yöntemi alay bazı testi yaptırın, ama nasıl belli sınıfın parametre ile denirdi bu yöntemi doğrulamak için, acaba: Ben bir yöntemi var bir paticular sınıf

verify(foo).putObject((SomeClass)anyObject()); 
------ 
verify(foo).putObject(any(SomeClass.class)); 
------ 
ArgumentCaptor<SomeClass> parameter = ArgumentCaptor 
      .forClass(SomeClass.class); 
verify(foo).putObject(parametr); 

any() ile sadece ikinci varyantını Works, ancak t check class of parameter` etmiyor. Yani bu yöntemin belirli bir sınıfın herhangi bir nesnesini aldığını doğrulamak mümkün mü?

cevap

44

Kullanıcı Eşleştiricisi documentationisA() yöntemi. sorununuzu çözecektir

public static <T> T isA(java.lang.Class<T> clazz)

.

verify(foo).putObject(any(),isA(SomeClass.class));

+2

Merhaba. Yukarıda listelenen kodu düzeltmek istiyorum. Doğru çağrı: Doğrulama (foo) .putObject (isA (SomeClass.class)); – nndru

1

Aslında ArgumentCaptor ile kontrol edebilirsiniz.

ArgumentCaptor<SomeClass> parameterCaptor = ArgumentCaptor 
      .forClass(SomeClass.class); 
verify(foo).putObject(parameterCaptor.capture()); 

SomeClass instance = parameterCaptor.getValue(); 
// check intance.getX() 
// check instance.getY() 
İlgili konular