在测试中,我使用模拟服务。我想检查一下服务是否有一个参数的特定属性被调用。 但是,该方法也被称为与其他参数的多次,但我只对上面的一个调用感兴趣。使用ArgumentCaptor验证模拟服务调用失败
我的意图是验证与参数捕获器的调用,以检查感兴趣的调用只被调用一次。 但是这会失败,因为该方法被多次调用,并且之后检查参数捕获器。
见下面的例子:
// service method
void serviceMethod(String someString, MyType myType);
// parameter type
class MyType {
private String id;
...
String getID() {
return id;
}
}
// test verification
ArgumentCaptor<MyType> paramCaptor = ArgumentCaptor.forClass(MyType.class);
// fail in verify
Mockito.verify(serviceMock, times(1)).serviceMethod(eq("someConstantValue"), paramCaptor);
assertEquals("123", paramCaptor.getValue().getID());
这是一个很好的方法。一般来说,争辩者是一种反模式。你应该可以通过验证来解决这个问题。 –