我有一个关于参数匹配器的问题。
class A(){
public B method(Class T,String str){}
}
我存根方法并想传递方法。
org.mockito.exceptions.misusing.InvalidUseOfMatchersException: 参数匹配器的使用无效!
A a = new A();
B b = new B();
Mockito.doReturn(b).when(a).method(argThat(new IsClass)), "111");
类是类:
class IsClass extends ArgumentMatcher<Class> {
public boolean matches(Object obj) {
return true;
}
}
那么,我该怎么办,可以通过这种方法。谢谢。
完整的异常消息应该告诉您出了什么问题:
如果匹配器与原始值组合在一起,则可能会出现此异常:
//不對: someMethod(anyObject((, "raw String"(;
因此,如果您的isClass()
是有效的 ArgumentMatcher,那么您将像这样存根:
Mockito.doReturn(b).when(a).method(argThat(new IsClass()), eq("111"));
//note how the second parameter of method uses the argument matcher
//"eq" rather than the raw string "111"
此外,如果您只想匹配"任何类对象",则可以这样做,而无需编写自己的自定义匹配器:
Mockito.doReturn(b).when(a).method(any(Class.class), eq("111"));
最后,您只能为模拟存根。因此,您的测试必须包含一些设置代码,如下所示:
A a = Mockito.mock(A.class);
B b = new B();
Mockito.doReturn(...
考虑花一些时间通读文档,以更好地处理如何使用 Mockito 进行测试。