J'ai une méthode:
void putObject(<T extends BaseEntity> param)
Avoir un test où je moque cette méthode, mais je me demande, comment vérifier que cette méthode a été appelée avec un paramètre de classe particulière? J'ai essayé de le faire de cette manière:
verify(foo).putObject((SomeClass)anyObject());
------
verify(foo).putObject(any(SomeClass.class));
------
ArgumentCaptor<SomeClass> parameter = ArgumentCaptor
.forClass(SomeClass.class);
verify(foo).putObject(parametr);
Fonctionne uniquement avec la deuxième variante avec any()
, mais pas le paramètre t check class of
`. Donc, s'il est possible de vérifier que cette méthode obtient un objet d'une classe particulière?
User Matcher documentation isA () method.
public static <T> T isA(Java.lang.Class<T> clazz)
Cela va résoudre ton problème.
verify(foo).putObject(isA(SomeClass.class));
En fait, vous pouvez vérifier avec ArgumentCaptor.
ArgumentCaptor<SomeClass> parameterCaptor = ArgumentCaptor
.forClass(SomeClass.class);
verify(foo).putObject(parameterCaptor.capture());
SomeClass instance = parameterCaptor.getValue();
// check intance.getX()
// check instance.getY()