1
私は以下に示すようなかなり単純なコードを持っています。Mockito - Spyのバグ - 呼び出しとして記録するとき
@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);
}
上記のコードでは、最初の失敗「検証」ので、「スタート」&への最初の呼び出しとして「とき」のコールを記録しているようです。このコードは、「リセット」の呼び出しをコメント解除するときにのみ機能します。私はJava 1.8でWindows上でMockito 2.1.0を使用しています。
ここで 'eq'は冗長であることに注意してください。あなたは 'doReturn(" Sure ")と書かなければなりません。(spyVehicle).start(true);' –