我有以下代码:
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的模拟方法,使参数正确地传递给端点?