gpt4 book ai didi

java - 模拟方法的 Mockito 调用实际方法

转载 作者:塔克拉玛干 更新时间:2023-11-01 23:03:15 26 4
gpt4 key购买 nike

我正在尝试使用 Mockito.when()doReturn() 模拟方法 createInstanceB()。这总是调用真正的方法。

例如:

Class A {
public B createInstanceB(any, any) {
B b = new B();
b.api();
}
}

我正在使用下面的代码

import org.mockito.Mockito;
import static org.mockito.Mockito.*;

Class ATest {
A a;
B b;

@Before
Public void setup{
a = A.getInstance();
b = mock(B.class);
}

@Test
public void testCreateInstanceB(){
Mockito.when(a.createInstanceB(any(),any()).thenReturn(b);
...
}
}

我也尝试了 doReturn(mock)

最佳答案

正如 StvnBrkdll 所建议的,如果您需要使用实际实例,请使用 Spy。但是,如果像您在示例中那样使用 Mockito.when() ,有时仍然可以调用真正的方法。作为替代方案,请查看 Mockito.doReturn()。例如使用您的代码:Mockito.doReturn(b).when(a).createInstanceB(any(),any()); 现在将只返回 b 和永远不要调用 createInstanceB 的实际方法。

顺便说一下,their docs有一个关于这个的部分。请参阅“有关监视真实对象的重要陷阱!

下的部分

关于java - 模拟方法的 Mockito 调用实际方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45120259/

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