tkr*_*man 8 java mocking mockito
我有以下代码:
when(mockedOperation.getResult(anyDouble(), anyDouble())).thenCallRealMethod();
when(mockedOperation.division(anyDouble(), not(eq(0d)))).thenCallRealMethod();
Run Code Online (Sandbox Code Playgroud)
哪里Operation是像Command模式-它封装了一些具体行动,在这种情况下,简化-除法运算.结果检索不是直接发生的,而是通过契约方法,比方说getResult(arg1, arg2).所以,我打电话
mockedOperation.division(10d, 3d);
Run Code Online (Sandbox Code Playgroud)
但是,(在我的具体执行的调试信息Operation),我可以看到,division()变得不10和3,但(0, 0).
据我了解,该参数是在两者之间失去了thenCallRealMethod()通过getResult(),并呼吁真正 division()算账.
这种行为的原因是什么?如果我确实需要它,我应该如何正确实现部分模拟?
UPD.也许我应该试着用另一种方式来说,例如,你是如何创建模拟的,callRealMethod以这种方式将参数正确地传递给端点?
好的,现在问题解决了。结果我刚刚在 Mockito 中遇到了另一个未记录的功能/错误(或者只是我还没有找到文档的功能)。问题是,在我的文件中@Before,我也嘲笑了这个操作,而且,正如它所显示的,当一个人重新定义模拟时,会发生一些黑色魔法,结果正如我已经描述的那样 - 参数以某种方式丢失了。
| 归档时间: |
|
| 查看次数: |
3041 次 |
| 最近记录: |