加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 为什么thenCallRealMethod()在这里丢失了参数?

发布时间:2020-12-15 03:10:37 所属栏目:Java 来源:网络整理
导读:我有以下代码: when(mockedOperation.getResult(anyDouble(),anyDouble())).thenCallRealMethod();when(mockedOperation.division(anyDouble(),not(eq(0d)))).thenCallRealMethod(); 操作类似于Command模式 – 它封装了一些具体的操作,在本例中是简化 – 除
我有以下代码:
when(mockedOperation.getResult(anyDouble(),anyDouble())).thenCallRealMethod();
when(mockedOperation.division(anyDouble(),not(eq(0d)))).thenCallRealMethod();

操作类似于Command模式 – 它封装了一些具体的操作,在本例中是简化 – 除法操作.结果检索不是直接发生的,而是通过契约方法,比如getResult(arg1,arg2).所以,我打电话

mockedOperation.division(10d,3d);

但是(从我在具体实现的Operation中调试信息)我可以看到division()不是10和3而是(0,0).

据我所知,这些参数在thenCallRealMethod()之间由getResult()丢失,之后调用real division().

这种行为的原因是什么?如果我确实需要它,我应该如何正确地实现部分模拟?

UPD.也许我应该试着用另一种方式说,例如,你如何创建callRealMethod的模拟方法,使参数正确地传递给端点?

解决方法

好的,问题现在解决了.事实证明我刚刚在Mockito中遇到了另一个未记录的功能/错误(或者我刚刚找不到文档的功能).问题在于,在我的@Before中,我也嘲笑了这个非常的操作,并且,当看起来,当一个人重新定义模拟时,会发生一些黑魔法,结果就像我已经描述过的那样 – 参数在某种程度上已经丢失了.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读