向 Mockito.any() 提供 class 以使 verify() 调用明确无误的正确语法是什么?
What is the correct syntax to supply a class to Mockito.any() so that the verify() call is unambiguous?
我在非 Mock 对象上使用 Mockito.spy(...)
来验证其方法之一从未被调用。但是,有一个歧义,因为我只是使用 any(), any()
,并且有两个带有两个参数的重载:
我对 Java 有点陌生,无法找出正确的方式来表达 Mockito 对我的要求。我认为我对 Java、 中的反射概念没有很好的处理,例如 Class
、Function
、lambda 等之间的区别
下面是一个实际(非 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?
我怎样才能让它工作?
你应该给编译器显式类型
executor.execute(any(), Matchers.<Function<?, ?>> any()); // here ? can be your explicit type
我在非 Mock 对象上使用 Mockito.spy(...)
来验证其方法之一从未被调用。但是,有一个歧义,因为我只是使用 any(), any()
,并且有两个带有两个参数的重载:
我对 Java 有点陌生,无法找出正确的方式来表达 Mockito 对我的要求。我认为我对 Java、 中的反射概念没有很好的处理,例如 Class
、Function
、lambda 等之间的区别
下面是一个实际(非 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?
我怎样才能让它工作?
你应该给编译器显式类型
executor.execute(any(), Matchers.<Function<?, ?>> any()); // here ? can be your explicit type