2013-02-08 14 views
19

Mam metodę:Mockito. Zweryfikować metody param się paticular klasa

void putObject(<T extends BaseEntity> param) 

mieć jakąś próbę gdzie mock tej metody, ale zastanawiam się, jak sprawdzić, czy metoda została wywołana z parametrem konkretnej klasy? Starał się zrobić to w takich sposobów:

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

działa tylko drugi wariant z any(), ale to nie robi t check class of parameter`. Więc jeśli możliwe jest sprawdzenie, czy metoda otrzymała jakiś obiekt danej klasy? Metoda

Odpowiedz

44

Matcher użytkownika documentationisA().

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

To rozwiąże problem.

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

+2

Witam. Chciałbym poprawić powyższy kod. Poprawne wywołanie to: verify (foo) .putObject (isA (SomeClass.class)); – nndru

1

Właściwie można sprawdzić z ArgumentCaptor.

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

SomeClass instance = parameterCaptor.getValue(); 
// check intance.getX() 
// check instance.getY() 
Powiązane problemy