我有一个方法:
void putObject(<T extends BaseEntity> param)
我在模拟这个方法时有一些测试,但我想知道,如何验证该方法是否使用特定类的参数调用?试图以这种方式做到:
verify(foo).putObject((SomeClass)anyObject());
------
verify(foo).putObject(any(SomeClass.class));
------
ArgumentCaptor<SomeClass> parameter = ArgumentCaptor
.forClass(SomeClass.class);
verify(foo).putObject(parametr);
仅使用any()
的第二个变体,但它不会t check class of
参数`。那么,如果可以验证该方法是否获得特定类的任何对象?
答案 0 :(得分:64)
用户匹配documentation isA()方法。
public static <T> T isA(java.lang.Class<T> clazz)
这将解决您的问题。
verify(foo).putObject(isA(SomeClass.class));
答案 1 :(得分:4)
实际上你可以查看ArgumentCaptor。
ArgumentCaptor<SomeClass> parameterCaptor = ArgumentCaptor
.forClass(SomeClass.class);
verify(foo).putObject(parameterCaptor.capture());
SomeClass instance = parameterCaptor.getValue();
// check intance.getX()
// check instance.getY()