Mockito - 0 Matchers Expected, 1 Recorded (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)


- Java包名称中单词分隔符的约定是什么? 2022-01-01
- value & 是什么意思?0xff 在 Java 中做什么? 2022-01-01
- C++ 和 Java 进程之间的共享内存 2022-01-01
- Safepoint+stats 日志,输出 JDK12 中没有 vmop 操作 2022-01-01
- Eclipse 插件更新错误日志在哪里? 2022-01-01
- 从 finally 块返回时 Java 的奇怪行为 2022-01-01
- Spring Boot连接到使用仲裁器运行的MongoDB副本集 2022-01-01
- Jersey REST 客户端:发布多部分数据 2022-01-01
- 如何使用WebFilter实现授权头检查 2022-01-01
- 将log4j 1.2配置转换为log4j 2配置 2022-01-01