Mockito.verify选择性方法调用

use*_*772 2 verify invocation mockito

在我的应用程序中,我的代码看起来像 -

request.setParameter("a",false);//line1
request.setParameter("b",someObject);//line2
request.setParameter("c",someObject);//line3
request.setParameter("d",someObject);//line4
Run Code Online (Sandbox Code Playgroud)

我已经模拟了请求对象,现在我想验证是否调用了line3.在我试过的测试类中,我不关心其他行 Mockito.verify(request).setParameter("c",someObject) ,但是我得到了错误 -

Argument(s) are different! Wanted:
request.setParameter("c",com.test.MyObject@fec107);
-> at XXX

Actual invocation has different arguments:
request.setParameter("a", false);
Run Code Online (Sandbox Code Playgroud)

出于某种原因,Mockito比较了第一次调用和抛出错误

Daw*_*ica 5

如果您正在验证的调用实际上没有发生,Mockito将只会这样做.因此,如果request.setParameter("c", someObject)被调用,则无论其他呼叫如何,您的测试都会通过.如果verify失败,Mockito会通过识别您试图验证的那个"接近错过"的电话来尝试提供帮助; 但只有verify失败.