[英]Mockito. Verify method param to be a particular class
I have a method: 我有一个方法:
void putObject(<T extends BaseEntity> param)
Have some test where I mock this method, but I wonder, how to verify that method was called with parameter of particular class? 有一些测试,我嘲笑这个方法,但我想知道,如何验证该方法是否被特定类的参数调用? Tried to do it in such ways:
试图以这样的方式做到:
verify(foo).putObject((SomeClass)anyObject());
------
verify(foo).putObject(any(SomeClass.class));
------
ArgumentCaptor<SomeClass> parameter = ArgumentCaptor
.forClass(SomeClass.class);
verify(foo).putObject(parametr);
Works only the second variant with any()
, but it doesn t check class of
parameter`. 仅使用
any()
工作第二个变量,但它不t check class of
参数t check class of
。 So if it is possible to verify that method get any object of particular class? 那么,如果有可能验证该方法获得特定类的任何对象?
User Matcher documentation isA() method. 用户匹配文档 是A()方法。
public static <T> T isA(java.lang.Class<T> clazz)
That will solve your problem. 这将解决您的问题。
verify(foo).putObject(isA(SomeClass.class));
Actually you can check with ArgumentCaptor. 实际上你可以用ArgumentCaptor查看。
ArgumentCaptor<SomeClass> parameterCaptor = ArgumentCaptor
.forClass(SomeClass.class);
verify(foo).putObject(parameterCaptor.capture());
SomeClass instance = parameterCaptor.getValue();
// check intance.getX()
// check instance.getY()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.