java - Mockito 问题 - Stubber 中的 when(java.lang.Void) 无法应用于 void

标签 java mocking mockito

我不明白为什么 doNothing 对此不起作用?有什么想法吗?

@Captor
ArgumentCaptor<GenericClass<someOtherClass>> captor;
...
Mockito.doNothing().when(mockObject.methodToStub(captor.capture()));

错误是:

Exception: when(java.lang.Void) in Stubber cannot be applied to void

最佳答案

这个 stub 是错误的:

doNothing().when(mockObject.methodToStub(captor.capture())); // wrong

methodToStub(...) 如果使用此 API 样式,则必须在 when 之外(它应该只包含模拟):

doNothing().when(mockObject).methodToStub(captor.capture()); // correct

然而,尽管评论:

  1. doNothing 是模拟的 void 方法的默认值。
  2. 您可以使用 BDDMockito 别名,使您的代码成为真正的à la 行为驱动开发

关于java - Mockito 问题 - Stubber 中的 when(java.lang.Void) 无法应用于 void,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25249902/

相关文章:

java - 更改 JTree 中的节点

java - 通过 Hibernate 4.3.5/JPA 2.1 创建 date_trunc 索引

java - 串流意外结束

java - 无法找到或加载主类 jar intellij

junit - 需要在要测试的类的构造函数中模拟对象的创建

java - 在本地抑制不必要的 stub 异常

unit-testing - Angular 2 (Mock Ionic2) -- 没有应用程序的提供者

PHPUnit 每次调用模拟方法都有不同的返回值

intellij-idea - 结合模拟和 stub 时对 Spock 交互的 IntelliJ 警告

java - 在 JUnit 测试中给定 JWT token 时,MockMVC 不返回任何值