gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:53:18 24 4
gpt4 key购买 nike

我有以下代码:

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() 不是 10 3(0, 0)

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

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

更新。也许我应该尝试换一种说法,例如,简单地说,您如何创建以参数正确传递到端点的方式调用 callRealMethod 的模拟?

最佳答案

OK,现在问题解决了。原来我刚刚在 Mockito 中遇到了另一个未记录的功能/错误(或者只是我还没有找到文档的功能)。问题是,在我的 @Before 中,我也 mock 了那个操作,而且,看起来,当一个人重新定义 mock 时,一些黑魔法发生了,结果就像我已经描述的那样 - arguments不知何故迷路了。

关于java - 为什么 thenCallRealMethod() 在这里丢失参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20355720/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com