Mockito – 期望0匹配,1记录(InvalidUseOfMatchersException)

我正在尝试模拟一些mongo类,这样我就不需要连接(相当标准的东西)但是下面的代码给了我一些问题:

when(dbCollection.find(isA(DBObject.class))).thenReturn(dbCursor); 

运行这个得到我:

org.mockito.exceptions.misusing.InvalidUseOfMatchersException:
参数匹配器的使用无效!
0匹配预期,1记录:
at … GridFileManagerTest.beforeClass(GridFileManagerTest.java:67)

如果匹配器与原始值组合,则可能发生此exception:
//错误:someMethod(anyObject(),“raw String”);

使用匹配器时,所有参数都必须由匹配器提供。
例如:
//正确:
someMethod(anyObject(),eq(“by matcher”));

有关更多信息,请参阅Matchers类的javadoc。

如果我这样做:

 when(dbCollection.find(mock(DBObject.class))).thenReturn(dbCursor); 

它不再有这个问题。 这似乎没有实现我想要的 – 我想在使用DBObject类型的对象调用方法时返回值。

思考?

我认为你的结果与dbCollection不是Mockito-mock(或你的方法是静态的或最终的)会发生的结果兼容。 这意味着在没有可以使用的情况下使用匹配器; 因此,“0匹配预期,1记录”。

可能不相关,但是当我发现一个包私有方法时我遇到了同样的错误。 将其改为公众为我解决了这个问题。