简体   繁体   English

的Mockito。验证方法参数是否为特定类

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM