Mockito When / Then Cookbook
1. Oversigt
Denne kogebog viser hvordan man bruger Mockito til at konfigurere adfærd i en række eksempler og brugssager.
Det kogebogens format er eksempelvis fokuseret og praktisk - ingen fremmede detaljer og forklaringer er nødvendige.
Og selvfølgelig, hvis du vil lære mere om at teste godt med Mockito, skal du se på de andre Mockito-artikler her.
Det bliver vi spotter en simpel liste implementering - den samme implementering, som vi brugte i den forrige kogebog:
offentlig klasse MyList udvider AbstractList {@ Override public String get (final int index) {return null; } @ Override public int-størrelse () {return 1; }}
2. Kogebog
konfigurere enkel returadfærd for mock
MyList listMock = Mockito.mock (MyList.class); når (listMock.add (anyString ())). derefterReturn (false); boolsk tilføjet = listMock.add (randomAlphabetic (6)); assertThat (tilføjet, er (falsk));
konfigurere returadfærd for mock på en alternativ måde
MyList listMock = Mockito.mock (MyList.class); doReturn (false). når (listMock) .add (anyString ()); boolsk tilføjet = listMock.add (randomAlphabetic (6)); assertThat (tilføjet, er (falsk));
konfigurer mock til at kaste en undtagelse på et metodekald
@Test (forventet = IllegalStateException.class) offentlig ugyldighed givenMethodIsConfiguredToThrowException_whenCallingMethod_thenExceptionIsThrown () {MyList listMock = Mockito.mock (MyList.class); når (listMock.add (anyString ())). derefter Kast (IllegalStateException.class); listMock.add (randomAlphabetic (6)); }
konfigurere opførsel af en metode med ugyldig returtype - for at kaste en undtagelse konfigurere adfærd for flere opkald konfigurere spionens opførsel konfigurer metode til at kalde den rigtige underliggende metode på en mock konfigurer mock-metodeopkald med tilpasset svar Dette format er et eksperiment - jeg offentliggør nogle af mine interne udviklingskogebøger om et givet emne - på Google Guava, Hamcrest og nu Mockito. Målet er at have disse oplysninger tilgængelige online - og tilføje dem, når jeg løber ind i et nyt nyttigt eksempel. Implementeringen af alle disse eksempler og kodestykker kan findes på GitHub - dette er et Maven-baseret projekt, så det skal være let at importere og kø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)); // kaster undtagelsen
MyList-forekomst = ny MyList (); MyList spion = Mockito.spy (forekomst); doThrow (NullPointerException.class). når (spion). størrelse (); spy.size (); // kaster undtagelsen
MyList listMock = Mockito.mock (MyList.class); når (listMock.size ()). derefterCallRealMethod (); assertThat (listMock.size (), equalTo (1));
MyList listMock = Mockito.mock (MyList.class); doAnswer (påkaldelse -> "Altid den samme"). når (listMock) .get (anyInt ()); Strengelement = listMock.get (1); assertThat (element, er (equalTo ("Altid det samme")));
3. Konklusion