我无法弄清楚为什么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
答案 0 :(得分:53)
这个存根错了:
doNothing().when(mockObject.methodToStub(captor.capture())); // wrong
如果使用此API样式, methodToStub(...)
必须在when
之外(它应该只包含模拟):
doNothing().when(mockObject).methodToStub(captor.capture()); // correct
但是,你的评论是:
doNothing
是模拟的void方法的默认值。BDDMockito
别名来使您的代码真实àla行为驱动开发答案 1 :(得分:6)
虽然你问为什么没有什么不起作用,但我知道你实际上想要捕获methodToStub的参数。
最直接的方法是:
verify(mockObject).methodToStub(captor.capture());
如果你只是想让你模拟在void方法调用上什么都不做,请记住什么都不做是mocks上void方法的默认。
如果由于某种原因你还需要拨打doNothing
,你应该注意括号位置。它应该是这样的:
doNothing().when(mockObject).methodToStub(any());
或 doNothing()时(mockObject).methodToStub(captor.capture());