Mockito When / Then Cookbook
1. Oversikt
Denne kokeboken viser hvordan du bruker Mockito til å konfigurere atferd i en rekke eksempler og brukstilfeller.
De kokebokformatet er eksempelvis fokusert og praktisk - ingen fremmede detaljer og forklaringer er nødvendige.
Og selvfølgelig, hvis du vil lære mer om å teste godt med Mockito, kan du ta en titt på de andre Mockito-artiklene her.
Vi blir det spotter en enkel liste implementering - den samme implementeringen som vi brukte i forrige kokebok:
offentlig klasse MyList utvider AbstractList {@Override public String get (final int index) {return null; } @ Override public int size () {retur 1; }}
2. Kokebok
konfigurere enkel returoppførsel for mock
MyList listMock = Mockito.mock (MyList.class); når (listMock.add (anyString ())). deretterReturn (false); boolsk lagt = listMock.add (randomAlphabetic (6)); assertThat (lagt til, er (false));
konfigurere returadferd for mock på en alternativ måte
MyList listMock = Mockito.mock (MyList.class); doReturn (false) .when (listMock) .add (anyString ()); boolsk lagt = listMock.add (randomAlphabetic (6)); assertThat (lagt til, er (false));
konfigurer mock til å kaste et unntak på en metodeanrop
@Test (forventet = IllegalStateException.class) offentlig ugyldig givenMethodIsConfiguredToThrowException_whenCallingMethod_thenExceptionIsThrown () {MyList listMock = Mockito.mock (MyList.class); når (listMock.add (anyString ())). deretter Kast (IllegalStateException.class); listMock.add (randomAlphabetic (6)); }
konfigurere oppførselen til en metode med ugyldig returtype - for å kaste et unntak konfigurere oppførselen til flere samtaler konfigurere oppførselen til en spion konfigurere metoden for å kalle den virkelige, underliggende metoden på en mock konfigurer mock metoden samtale med tilpasset svar Dette formatet er et eksperiment - jeg publiserer noen av mine interne utviklingskokebøker om et gitt emne - på Google Guava, Hamcrest og nå Mockito. Målet er å ha denne informasjonen tilgjengelig online - og legge til den når jeg støter på et nytt nyttig eksempel. Implementeringen av alle disse eksemplene og kodebiter kan du finne på GitHub - dette er et Maven-basert prosjekt, så det skal være enkelt å importere og kjøre som det er.MyList listMock = Mockito.mock (MyList.class); doThrow (NullPointerException.class) .when (listMock) .clear (); listMock.clear ();
MyList listMock = Mockito.mock (MyList.class); når (listMock.add (anyString ())) .thenReturn (false) .thenThrow (IllegalStateException.class); listMock.add (randomAlphabetic (6)); listMock.add (randomAlphabetic (6)); // vil kaste unntaket
MyList-forekomst = ny MyList (); MyList spion = Mockito.spy (forekomst); doThrow (NullPointerException.class). når (spion) .størrelse (); spy.size (); // vil kaste unntaket
MyList listMock = Mockito.mock (MyList.class); når (listMock.size ()). thenCallRealMethod (); assertThat (listMock.size (), equalTo (1));
MyList listMock = Mockito.mock (MyList.class); doAnswer (påkalling -> "Alltid det samme"). når (listMock) .get (anyInt ()); Strengelement = listMock.get (1); assertThat (element, is (equalTo ("Always the same")));
3. Konklusjon