使用参数匹配器 eq() 验证具有不同参数的方法调用失败,抱怨参数不同



我正在编写一个测试用例,以使用具有特定参数的特定方法调用来验证执行。测试仅在将特定值传递给方法时才需要通过(例如,仅在传递状态和 ParseError 时传递(。下面是测试要验证的代码片段:

Mockito.verify(exeImpl, Mockito.atLeastOnce()).setData(eq("status"), eq("ParseError"));

并且案例失败,如下所示:

Argument(s) are different! Wanted: 
exeImpl.setData(
"status",
"ParseError"
);
-> at com.TestTask.testRest(TestTask.java:280)
Actual invocation has different arguments:
exeImpl.setData(
"status",
"Error"
);
-> at 
com.TestTask.setDefault(Task.java:186)

错误中提到的实际调用是因为在启动业务逻辑之前使用默认值调用 setData。业务逻辑完成后,再次调用 setData 来设置结果。

并且设置数据具有以下定义

setData(final String arg1, final Object arg2) {...}

我知道 ArgumentCaptor,但我只是想让它像这样工作,因为我相信这里使用匹配器eq((来检查为两个参数传递的值的相等。还是因为它是对象而引起问题。

可以这样验证吗?谢谢。

问题出在我的代码上,因为我的测试没有用@Before正确初始化。

最新更新