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

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

本文介绍了Mockito - 预期 0 个匹配器,记录 1 个(InvalidUseOfMatchersException)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I'm trying to mock up some mongo classes so that I don't need a connection (fairly standard stuff) but the following code gives me problems:

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

运行这个得到我:

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

org.mockito.exceptions.misusing.InvalidUseOfMatchersException:
Invalid use of argument matchers!
0 matchers expected, 1 recorded:
at ...GridFileManagerTest.beforeClass(GridFileManagerTest.java:67)

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

This exception may occur if matchers are combined with raw values:
//incorrect: someMethod(anyObject(), "raw String");

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

When using matchers, all arguments have to be provided by matchers.
For example:
//correct:
someMethod(anyObject(), eq("String by matcher"));

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

For more info see javadoc for Matchers class.

如果我这样做:

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

它不再有这个问题.这似乎并没有完成我想要的 - 我想在使用 DBObject 类型的对象调用该方法时返回该值.

it no longer has that problem. This doesn't seem to accomplish what I want though - I want to return the value when the method is called with an object of type DBObject.

想法?

推荐答案

我认为你的结果与如果 dbCollection 不是 Mockito-mock (或者你的方法是静态的)会发生的结果兼容或最终).这意味着在无法使用匹配器的地方使用匹配器;因此预期 0 个匹配器,记录 1 个".

I think your results are compatible with the result that would happen if dbCollection is not a Mockito-mock (or your method is static or final). That would mean that a matcher is being used where none can be used; hence the "0 matchers expected, 1 recorded".

这篇关于Mockito - 预期 0 个匹配器,记录 1 个(InvalidUseOfMatchersException)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本文标题为:Mockito - 预期 0 个匹配器,记录 1 个(InvalidUseOfMatchersException)

基础教程推荐