【发布时间】:2016-08-19 07:41:35
【问题描述】:
我的测试类中有这段代码:
then(collector()).should().emit(eq(myStream), eq(myTuple),
argThat(allOf(hasItem(anyString()), hasItem("test1"), hasItem("test2"))));
问题是我不知道第一个Item的值。我只知道该值的类型为String。
如果我执行测试,我会收到消息:
参数匹配器的使用无效!预计 3 个匹配者,5 个记录
此外:
如果匹配器与原始值组合,则可能会发生此异常: //不正确: someMethod(anyObject(), "原始字符串");使用匹配器时,所有参数都必须由匹配器提供。例如: //正确的: someMethod(anyObject(), eq("String by matcher"));
我看不到问题。
感谢您的帮助。
【问题讨论】:
-
看起来你的
anyString来自 Mockito 而不是 Hamcrest... -
你能添加你的导入吗?
-
嗨,鲍里斯。你说的对。它适用于任何(String.class)。给它作为答案,我会接受它。谢谢帮助
-
@StefanBeike 我仍然反对 Manu 说你应该发布你的导入。 Boris 是对的,
emit应该为每个参数都有一个 Mockito 匹配器,allOf应该只包含 Hamcrest 匹配器,但如果anyString是第四个匹配器,我看不出第五个记录匹配器的来源。
标签: java junit mockito hamcrest