为什么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()不是103(0, 0)

据我所知,这个参数在thenCallRealMethod()getResult()之间丢失了, thenCallRealMethod()又调用了真正的division()

这种行为的原因是什么?如何正确实施部分模拟以防万一我真的需要它?

UPD。 也许我应该尝试以另一种方式说出来,例如,简单地说,如何创建一个callRealMethod参数以便将参数正确传送到端点?


好的,现在问题就解决了。 事实证明,我刚刚在Mockito中遇到了另一个未公开的功能/错误(或者只是我没有找到该文档的功能)。 问题是,在我的@Before我也嘲笑了这种操作,而且看起来,当人们重新定义模拟时,发生了一些黑魔法,其结果就像我已经描述的那样 - 争论失去了某种程度。

链接地址: http://www.djcxy.com/p/17709.html

上一篇: Why does thenCallRealMethod() lose the arguments here?

下一篇: Traversing a list with hazard pointers