莫吉托:如何匹配类<T>

  • 本文关键字:何匹配 mockito match
  • 更新时间 :
  • 英文 :


我有一个关于参数匹配器的问题。

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 进行测试。

相关内容

  • 没有找到相关文章

最新更新