首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Mockito问题-无法将存根中的(java.lang.Void)应用于无效

Mockito问题-无法将存根中的(java.lang.Void)应用于无效
EN

Stack Overflow用户
提问于 2014-08-12 02:22:17
回答 2查看 46.7K关注 0票数 43

我不明白为什么doNothing不能解决这个问题?有什么想法吗?

代码语言:javascript
复制
@Captor
ArgumentCaptor<GenericClass<someOtherClass>> captor;
...
Mockito.doNothing().when(mockObject.methodToStub(captor.capture()));

错误是:

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

EN

回答 2

Stack Overflow用户

发布于 2014-08-12 05:09:38

这个存根是错误的:

代码语言:javascript
复制
doNothing().when(mockObject.methodToStub(captor.capture())); // wrong

如果使用这种接口样式,methodToStub(...)必须在when之外(它应该只包含mock):

代码语言:javascript
复制
doNothing().when(mockObject).methodToStub(captor.capture()); // correct

不过,我想说的是:

  1. doNothing是模拟的空方法的默认值。
  2. 您可以使用BDDMockito别名,使您的代码能够像

中的行为驱动开发那样真实

票数 83
EN

Stack Overflow用户

发布于 2014-08-12 02:35:20

虽然您问为什么doNothing不能工作,但我知道您实际上想要抓住methodToStub的论点。

要做到这一点,最直接的方法是:

代码语言:javascript
复制
verify(mockObject).methodToStub(captor.capture());

如果你只想让mock在一个void方法调用中什么都不做,记住什么都不做是mock上void方法的默认

如果由于某些原因你仍然需要调用doNothing,你应该注意括号的位置。它应该看起来像这样:

代码语言:javascript
复制
doNothing().when(mockObject).methodToStub(any());

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

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25249902

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档