当前位置: 首页 > 面试题库 >

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

干浩阔
2023-03-14
问题内容

我正在尝试模拟一些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类型的对象调用该方法时,我想返回该值。

有什么想法吗?


问题答案:

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



 类似资料:
  • 我试图模拟一些mongo类,这样我就不需要连接(相当标准的东西),但下面的代码给我带来了问题: 运行这个获取的是我: 组织。莫基托。例外。滥用。InvalidUseOfMatchers异常: 参数匹配器的使用无效 需要0个匹配者,记录了1个: 在。。。GridFileManagerTest。上课前(GridFileManagerTest.java:67) 如果匹配器与原始值相结合,则可能会发生此异

  • 你知道我错过了什么吗?

  • 我在试着验证Mockito的记录器信息。 但是,我不能运行我的junit类来覆盖所有代码行。 你知道为什么吗? 需要但未调用:mockappender.doappend();->在AppTest.TestWithover3Element(AppTest.java:52)实际上,与这个模拟没有任何交互。

  • 我在MyBatis中使用了Spring,它在单个数据库中运行得非常好。我在尝试添加另一个数据库时遇到了困难(请参见Github上的可复制示例)。 你能看出我哪里出了问题吗?

  • 如何精确匹配img标记的多个实例?我读了一些关于preg_match的教程,但从未真正理解。 我以此为基础: 我做了一个小的像正则表达式: 在这之后,我就卡住了。我如何继续匹配所有直到两个字符串的末尾? 我在PHP网站上发现了数组部分: 使用我的代码,我如何获得图像URL和alt标签? 谢谢

  • 问题内容: 我试图让我的头围绕mysql。谁能告诉我为什么这个MySQL查询无法正常工作?我收到以下错误: 警告:mysqli_error()期望恰好有1个参数,第11行的/home/freebet2/public_html/test.php中给出的参数为0 test.php db.php 如果我将alter string更改为:之类的原因,我不会收到任何错误。 问题答案: 就sql错误而言,“用