Mockito, Verwendungen von doNothing() Wenn()
Ich bin neu Mockito, und ich ging über dieses Beispiel, aber es ist ein Schritt, dass ich nicht verstehen, wenn er fordert doNothing()
auf die erste Zeile der Methode:
@Test(expected = RuntimeException.class)
public void testConsecutiveCalls() throws Exception(){
doNothing().doThrow(Exception.class).when(b).voidMethod();
a.usesVoidMethod()
verify(b).voidMethod();
a.usesVoidMethod()
}
Ich verstehe, dass, wenn das erste mal voidMehtod()
genannt wird, ist wieder nichts und in der zweiten Zeit, es gibt eine Ausnahme.
Aber wenn wir entfernen Sie die doNothing.doThrow(Exception.class).when(b).voidMethod();
, nicht der test noch gültig und werden testen, was wir testen wollen, dass die Methode eine exception werfen, in die zweite Zeit?
InformationsquelleAutor MIKE | 2016-10-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ein paar Punkte, nummeriert, nur für eine einfache Referenz:
Dem Standard-Verhalten eines mock wird eine entsprechende dummy-Wert jedes mal, oft null,
null
oder eine leere Zeichenfolge. Das Standardverhalten des ein Spion ist zu nennen, der Spion der realen Umsetzung. Natürlich, durch Parameter zu@Mock
oderMockito.mock
können Sie eine beliebige Antwort, oder irgendwelche von Mockito ist standard oder zusätzliche Antworten.Wenn mehrere Maßnahmen als Teil einer Kette, Mockito, wird jede Aktion in Folge, und immer wiederholen Sie die Letzte Aktion.
Beachten Sie, dass dies innerhalb der gleichen Kette; die zuletzt definierten passende Kette gewinnt, so dass separate Anweisungen hätte nicht den gleichen Effekt.
doNothing
, dann bekommt die meisten seines Wertes von entweder überschreiben des Standard-Verhalten oder Sie eine Aktion einrichten, die in einer Kette.Also, was der test versuchen zu tun ist, um
doNothing
das erste mal, dass die überprüfung erfolgreich sein wird, und danndoThrow
zweiten mal zu befriedigen, die erwartete Ausnahme. Obwohl eine fehlgeschlageneverify
würde (korrekt) der test als nicht bestanden, weil Mockito Fehler Unterklasse Fehler und nicht die Ausnahme, du hast Recht, dass ein entfernen derdoNothing
würde bewirken noch den test zu bestehen, durch das werfen der exception auf den ersten Aufrufa.usesVoidMethod()
. Obwohl dies ist gut genug für die test-nach all, können Sie sehen, diedoNothing
im test selbst--ein robuster test könnte wie folgt Aussehen:InformationsquelleAutor Jeff Bowman
Den
doNothing
- Methode ändert nicht das Verhalten einesmocked' method, but the declaration of the
doThrowdoes. If you have a spy and don't want a method to be executed, then
doNothing` ändert das Verhalten.doThrow(Exception.class)
ist es zu ändern? Wenn ich Sie entfernendoNothing().doThrow(Exception.class).when(b).voidMethod();
was ist die Nebenwirkung, die hinter tun?InformationsquelleAutor Niklas P