mst*_*rom 35 java mocking mockito
我无法弄清楚为什么doNothing
不能为此工作?有任何想法吗?
@Captor
ArgumentCaptor<GenericClass<someOtherClass>> captor;
...
Mockito.doNothing().when(mockObject.methodToStub(captor.capture()));
Run Code Online (Sandbox Code Playgroud)
错误是:
Exception: when(java.lang.Void) in Stubber cannot be applied to void
Bri*_*ice 66
这个存根是错误的:
doNothing().when(mockObject.methodToStub(captor.capture())); // wrong
Run Code Online (Sandbox Code Playgroud)
methodToStub(...)
必须在when
if 之外使用这种API样式(它应该只包含模拟):
doNothing().when(mockObject).methodToStub(captor.capture()); // correct
Run Code Online (Sandbox Code Playgroud)
然而,这些评论:
doNothing
是mock的void方法的默认值.BDDMockito
,使您的代码的别名是真实的点菜行为驱动开发 虽然你问为什么没有什么不起作用,但我知道你实际上想要捕获methodToStub的参数.
最直接的方法是:
verify(mockObject).methodToStub(captor.capture());
Run Code Online (Sandbox Code Playgroud)
如果你只是想让你模拟在void方法调用上什么都不做,请记住什么都不做是mocks上void方法的默认设置.
如果由于某种原因你还需要打电话doNothing
,你应该注意括号位置.它应该如下所示:
doNothing().when(mockObject).methodToStub(any());
Run Code Online (Sandbox Code Playgroud)
或者doNothing().when(mockObject).methodToStub(captor.capture());
归档时间: |
|
查看次数: |
37829 次 |
最近记录: |