java - 向 Mockito.any() 提供类以使 verify() 调用明确的正确语法是什么?
问题描述
我Mockito.spy(...)
在非 Mock 对象上使用来验证它的方法之一是否从未被调用。但是,有一个歧义,因为我只是在使用any(), any()
,并且有两个带有两个参数的重载:
我对 Java 有点陌生,无法找出正确的方式来表达 Mockito 对我的要求。我认为我对 Java 中的反射概念没有很好的处理,例如Class
, Function
, lambdas 等之间的区别。
这是该方法的实际(非 Mockito)使用示例:
return jdbiExecutor.execute(Foo.class,
foo -> {
// Some code.
return Bar.newBuilder().build();
});
所以,我要验证的是第一个重载,Function<D, T>
它的第二个参数是 a。我尝试过但不起作用的一些事情:
// 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
推荐阅读
- c# - 无法让主题交换在 RabbitMQ AMQP 1.0 中工作
- java - 当通过 JDBC 完成 db mods 时,mysqlbinlog (v8) 发出 character_set_client=255
- google-cloud-platform - 删除服务帐户后,Google 云端硬盘文件会发生什么情况?
- asp.net-core - .NET Core RedirectToAction 在 Nginx 后面无法正常工作
- javascript - JSDoc - 如何将参数类型显示为与基类方法相同的类型?
- java - 是否可以在开始时创建一个具有 0 个连接的可变大小的 Hikari 连接池?
- testing - ioRedis.Cluster 的玩笑有间歇性结果 - 未调用异步回调
- java - 从后端发送的 Google Analytics 事件。没有出现
- python - 使用 Apache2 + Gunicorn 服务 Flask 时出现奇怪的 `/` 行为
- android - Android MainActivity 在启动时被调用两次