gpt4 book ai didi

java - Mockito - spy 错误 - 将何时记录为调用

转载 作者:行者123 更新时间:2023-11-30 02:46:51 24 4
gpt4 key购买 nike

我有一些非常简单的代码,如下所示。

@Test
public void bugInInvokingASpyAndVerification() throws ColdDayException {
//given
Engine en = new Engine();
Engine spyEngine = spy(en);

Vehicle realDeal = new Vehicle(new Wheel(), spyEngine, new Brake());
Vehicle spyVehicle = spy(realDeal);

//When part - set-up stubs
when(spyVehicle.start(true)).thenReturn("Sure");
//Mockito.reset(spyVehicle);

//then part - actual calls + verifications
String x = spyVehicle.start(true);

assertEquals(x, "Sure");
verify(spyVehicle, times(1)).start(true);
verify(spyEngine, atLeastOnce()).startEngine(true);
verify(spyEngine, times(1)).startEngine(true);
}

上面的代码似乎将“when”调用记录为对“start”的第一次调用,因此第一个“verify”失败。仅当我取消对“重置”调用的注释时,该代码才有效。我在 Windows 上使用 Mockito 2.1.0 和 Java 1.8。

最佳答案

事实上,在 when(spyVehicle.start(true)).thenReturn("Sure"); 行中,您调用了 start。有多种方法可以避免这种情况。

其中之一是使用doReturn:

 doReturn("Sure").when(spyVehicle).start(eq(true));

请注意,这里我们正在进行 stub 操作,而不是调用该方法。

关于java - Mockito - spy 错误 - 将何时记录为调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39997013/

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