繁体   English   中英

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

[英]Mockito issue - when(java.lang.Void) in Stubber cannot be applied to void

我无法弄清楚为什么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

这个存根是错误的:

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

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

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

然而,这些评论:

  1. doNothing是mock的void方法的默认值。
  2. 您可以使用BDDMockito别名,使你的代码是真实的点菜行为驱动开发

虽然你问为什么没有什么不起作用,但我知道你实际上想要捕获methodToStub的参数。

最直接的方法是:

verify(mockObject).methodToStub(captor.capture());

如果你只是想让你模拟在void方法调用上什么都不做,请记住什么都不做是mocks上void方法的默认设置

如果由于某种原因你仍然需要调用doNothing ,你应该注意括号位置。 它应该如下所示:

doNothing().when(mockObject).methodToStub(any());

或者doNothing()。when(mockObject).methodToStub(captor.capture());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM