为Mockito.any()提供一个类,以便verify()调用是明确的正确语法是什么?

时间:2018-07-24 02:26:20

标签: java generics mockito ambiguous-call

我在非Mock对象上使用Mockito.spy(...)来验证其方法之一从未被调用。但是,存在歧义,因为我只是使用any(), any(),并且有两个参数两个重载:

enter image description here

我对Java有点陌生,无法找到表达Mockito向我想要什么的正确方法。我认为我对Java中的反射概念没有很好的了解,例如ClassFunction,lambda等之间的区别。

以下是 actual (非Mockito)使用该方法的示例:

        return jdbiExecutor.execute(Foo.class,
            foo -> {
              // Some code.
              return Bar.newBuilder().build();
            });

因此,我要验证的是第一个重载,它的第二个参数使用Function<D, T>。我尝试过但无法使用的一些东西:

// Is specifying just one of the parameters enough?
verifyZeroInteractions(executor.execute(any(Foo, any()));

// Maybe I need to supply the `.class()`?
verifyZeroInteractions(executor.execute(any(Foo.class, any()));

// Or literally, `Class<Foo>`?
verifyZeroInteractions(executor.execute(any(Class<Foo>), any()));

// Or what, do I _have_ to specify both parameters to some degree?

如何使它正常工作?

1 个答案:

答案 0 :(得分:1)

您应将显式类型提供给编译器

executor.execute(any(), Matchers.<Function<?, ?>> any()); // here ? can be your explicit type