为什么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)

据我所知,在getResult()thenCallRealMethod()和之后调用realdivision()之间的某个地方,这些参数丢失了。

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

UPD。也许我应该试着换一种说法,例如,简单地说,如何创建callRealMethod的mock,以便将参数正确地传递到端点?

好的,现在问题解决了。事实证明,我刚刚在Mockito中遇到了另一个未记录的功能/错误(或者只是我还没有找到文档的功能)。问题是,在我的@Before中,我也嘲笑了这个操作,而且,正如它所显示的,当一个人重新定义mock时,会发生一些黑色魔法,结果就像我已经描述的那样——论点不知何故丢失了。

相关内容

  • 没有找到相关文章