为什么thenCallRealMethod()在这里失去了参数?
我有以下代码:
when(mockedOperation.getResult(anyDouble(), anyDouble())).thenCallRealMethod();
when(mockedOperation.division(anyDouble(), not(eq(0d)))).thenCallRealMethod();
其中Operation类似Command模式 - 它封装了一些具体操作,在这种情况下,简化了分割操作。 检索结果不是直接发生,而是通过合约方法,例如getResult(arg1, arg2) 。 所以,我打电话
mockedOperation.division(10d, 3d);
但(从我的具体实施Operation信息调试)我可以看到division()不是10和3但(0, 0) 。
据我所知,这个参数在thenCallRealMethod()和getResult()之间丢失了, thenCallRealMethod()又调用了真正的division() 。
这种行为的原因是什么?如何正确实施部分模拟以防万一我真的需要它?
UPD。 也许我应该尝试以另一种方式说出来,例如,简单地说,如何创建一个callRealMethod参数以便将参数正确传送到端点?
好的,现在问题就解决了。 事实证明,我刚刚在Mockito中遇到了另一个未公开的功能/错误(或者只是我没有找到该文档的功能)。 问题是,在我的@Before我也嘲笑了这种操作,而且看起来,当人们重新定义模拟时,发生了一些黑魔法,其结果就像我已经描述的那样 - 争论失去了某种程度。
