Ich möchte Mockito verwenden, um den (vereinfachten) Code unten zu testen. Ich weiß nicht, wie ich Mockito sagen soll, dass er beim ersten Mal scheitern und beim zweiten Mal erfolgreich sein soll.
for(int i = 1; i < 3; i++) {
String ret = myMock.doTheCall();
if("Success".equals(ret)) {
log.write("success");
} else if ( i < 3 ) {
log.write("failed, but I'll try again. attempt: " + i);
} else {
throw new FailedThreeTimesException();
}
}
Ich kann den Erfolgstest einrichten mit:
Mockito.when(myMock).doTheCall().thenReturn("Success");
Und der Fehlertest mit:
Mockito.when(myMock).doTheCall().thenReturn("you failed");
Aber wie kann ich testen, ob es erfolgreich ist, wenn es einmal (oder zweimal) fehlschlägt?
doThrow(new RuntimeException()).doNothing().when(myMock).doTheCall();