我正在使用mockito编写Junit测试,我想验证是否进行了方法调用。问题是有多个使用不同参数的方法调用,我只想验证其中之一。
Eg : Below are 3 method calls from my code
Metrics.emit(PhoneFailCount,0);
Metrics.emit(PaymentFailCount,1);
Metrics.emit(AddresseFailCount,1);
如何验证
Metrics.emit(PaymentFailCount,1)
至少被调用一次。
如果我直接这样做
verify(Metrics).emit(PaymentFailCount, 1)
它会抛出错误,说参数不同!因为它试图与 Metrics.emit(PhoneFailCount,0) 匹配
我尝试使用 ArgumentCaptor,但无法同时捕获两个参数
谢谢
最佳答案
您可以使用 ArgumentCaptor 来实现此目的。检查下面的代码。这应该有效
ArgumentCaptor<String> captor1 = ArgumentCaptor.forClass(String.class);
ArgumentCaptor<Integer> captor2 = ArgumentCaptor.forClass(Integer.class);
verify(Metrics, times(3)).emit(captor1.capture(), captor2.capture);
List<Integer> values = captor2.getAllValues;
//assertIf values have values 0,1 and 1
关于java - Mockito,验证多个方法调用之一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47425033/