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

前端之家收集整理的这篇文章主要介绍了java – 为什么thenCallRealMethod()在这里丢失了参数?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有以下代码
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中,我也嘲笑了这个非常的操作,并且,当看起来,当一个人重新定义模拟时,会发生一些黑魔法,结果就像我已经描述过的那样 – 参数在某种程度上已经丢失了.

猜你在找的Java相关文章