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

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

konfigurere oppførselen til flere samtaler

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

konfigurere oppførselen til en spion

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

konfigurere metoden for å kalle den virkelige, underliggende metoden på en mock

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

konfigurer mock metoden samtale med tilpasset svar

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

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.


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