我不明白为什么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
发布于 2014-08-12 05:09:38
这个存根是错误的:
doNothing().when(mockObject.methodToStub(captor.capture())); // wrong
如果使用这种接口样式,methodToStub(...)
必须在when
之外(它应该只包含mock):
doNothing().when(mockObject).methodToStub(captor.capture()); // correct
不过,我想说的是:
doNothing
是模拟的空方法的默认值。BDDMockito
别名,使您的代码能够像中的行为驱动开发那样真实
发布于 2014-08-12 02:35:20
虽然您问为什么doNothing不能工作,但我知道您实际上想要抓住methodToStub的论点。
要做到这一点,最直接的方法是:
verify(mockObject).methodToStub(captor.capture());
如果你只想让mock在一个void方法调用中什么都不做,记住什么都不做是mock上void方法的默认。
如果由于某些原因你仍然需要调用doNothing
,你应该注意括号的位置。它应该看起来像这样:
doNothing().when(mockObject).methodToStub(any());
或doNothing().when(mockObject).methodToStub(captor.capture());
https://stackoverflow.com/questions/25249902
复制相似问题