我正在尝试模拟一些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。
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类型的对象调用该方法时,我想返回该值。
有什么想法吗?
我认为您的结果与如果dbCollection不是Mockito- mock(或者您的方法是静态的或最终的)可能发生的结果兼容。那就意味着在没有匹配器的地方使用了匹配器。因此,“预期有0个匹配者,有1个记录”。
dbCollection