小编典典

Mockito-预期有0个匹配器,有1个记录(InvalidUseOfMatchersException)

java

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

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

运行这个得到我:

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

如果匹配器与原始值组合,则可能发生此异常:
//不正确:someMethod(anyObject(),“ raw String”);

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

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

如果我要这样做:

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

它不再有这个问题。这似乎没有实现我想要的结果-当我用DBObject类型的对象调用该方法时,我想返回该值。

有什么想法吗?


阅读 208

收藏
2020-11-23

共1个答案

小编典典

我认为您的结果与如果dbCollection不是Mockito-
mock(或者您的方法是静态的或最终的)可能发生的结果兼容。那就意味着在没有匹配器的地方使用了匹配器。因此,“预期有0个匹配者,有1个记录”。

2020-11-23