如何使Mockito.verify忽略其他类型参数?

时间:2014-08-18 21:28:14

标签: java unit-testing mockito

我有一个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)电话,但我不希望测试因为被调用而失败。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:4)

isA匹配器用于您关心特定类型的调用。

http://site.mockito.org/mockito/docs/current/org/mockito/ArgumentMatchers.html#isA(java.lang.Class)

any的文档说明它实际上没有检查类型 - 它只是让你避免投射。因此,验证任何接受任何类型的对象 - 这就是为什么你得到2个调用而不是1。