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

MyList listMock = Mockito.mock (MyList.class); doThrow (NullPointerException.class) .when (listMock) .clear (); listMock.clear ();

konfigurere adfærd for flere opkald

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

konfigurere spionens opførsel

MyList-forekomst = ny MyList (); MyList spion = Mockito.spy (forekomst); doThrow (NullPointerException.class). når (spion). størrelse (); spy.size (); // kaster undtagelsen

konfigurer metode til at kalde den rigtige underliggende metode på en mock

MyList listMock = Mockito.mock (MyList.class); når (listMock.size ()). derefterCallRealMethod (); assertThat (listMock.size (), equalTo (1));

konfigurer mock-metodeopkald med tilpasset svar

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

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.


$config[zx-auto] not found$config[zx-overlay] not found