我有一个GenericCreator,使用以下方法
<E extends Entity> E create(E entity);
我想断言这个方法(其中E = Foo)只被调用一次。我不在乎是否使用任何其他类型参数调用它。以下断言对我不起作用:
verify(genericCreator).create(any(Foo.class));
因为在以下情况中:
Foo foo = new Foo();
Bar bar = new Bar();
genericCreator.create(foo);
genericCreator.create(bar);
它抛出org.mockito.exceptions.verification.TooManyActualInvocations:
genericCreator.create(<any>); Wanted 1 time .... But was 2 times ...
虽然实际上我并不关心.create(bar)电话,但我不希望测试因为被调用而失败。我怎样才能做到这一点?
答案 0 :(得分:4)
将isA
匹配器用于您关心特定类型的调用。
http://site.mockito.org/mockito/docs/current/org/mockito/ArgumentMatchers.html#isA(java.lang.Class)
any
的文档说明它实际上没有检查类型 - 它只是让你避免投射。因此,验证任何接受任何类型的对象 - 这就是为什么你得到2个调用而不是1。