我有一个关于Argument Matcher的问题。
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:
class IsClass extends ArgumentMatcher<Class> {
public boolean matches(Object obj) {
return true;
}
}
那么,我该怎么做,可以通过这种方法.Thankyou。
答案 0 :(得分:3)
完整的异常消息应该告诉您错误:
如果匹配器与原始值结合使用,则可能发生此异常:
//不正确的: someMethod(anyObject(),&#34; raw String&#34;);
所以,如果你的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"
此外,如果您只想匹配&#34;任何类对象&#34;你可以这样做,而不必编写自己的自定义匹配器:
Mockito.doReturn(b).when(a).method(any(Class.class), eq("111"));
最后,你只能存根嘲笑。所以你的测试必须包含一些这样的设置代码:
A a = Mockito.mock(A.class);
B b = new B();
Mockito.doReturn(...
考虑花一些时间阅读the documentation以更好地了解如何使用Mockito进行测试。