Mockito wanneer / dan kookboek
1. Overzicht
Dit kookboek laat zien hoe je Mockito gebruikt om gedrag te configureren in een verscheidenheid aan voorbeelden en use-cases.
De formaat van het kookboek is voorbeeldgericht en praktisch - geen externe details en uitleg nodig.
En als je meer wilt weten over goed testen met Mockito, bekijk dan hier de andere Mockito-artikelen.
We zullen zijn een simpele lijst bespotten implementatie - dezelfde implementatie die we in het vorige kookboek hebben gebruikt:
openbare klasse MyList breidt AbstractList uit {@Override public String get (final int index) {return null; } @Override public int size () {return 1; }}
2. Kookboek
configureer eenvoudig retourgedrag voor mock
MyList listMock = Mockito.mock (MyList.class); when (listMock.add (anyString ())). thenReturn (false); boolean toegevoegd = listMock.add (randomAlphabetic (6)); assertThat (toegevoegd, is (false));
configureer retourgedrag voor mock op een alternatieve manier
MyList listMock = Mockito.mock (MyList.class); doReturn (false) .when (listMock) .add (anyString ()); boolean toegevoegd = listMock.add (randomAlphabetic (6)); assertThat (toegevoegd, is (false));
configureer mock om een uitzondering te genereren voor een methodeaanroep
@Test (verwacht = IllegalStateException.class) openbare ongeldige gegevenMethodIsConfiguredToThrowException_whenCallingMethod_thenExceptionIsThrown () {MyList listMock = Mockito.mock (MyList.class); when (listMock.add (anyString ())). thenThrow (IllegalStateException.class); listMock.add (randomAlphabetic (6)); }
configureer het gedrag van een methode met ongeldig retourtype - om een uitzondering te genereren configureer het gedrag van meerdere oproepen configureer het gedrag van een spion configureer methode om de echte, onderliggende methode op een mock configureer nepmethode-oproep met aangepast antwoord Dit formaat is een experiment - ik publiceer een aantal van mijn kookboeken voor interne ontwikkeling over een bepaald onderwerp - op Google Guava, Hamcrest en nu Mockito. Het doel is om deze informatie direct online beschikbaar te hebben - en om er iets aan toe te voegen wanneer ik een nieuw bruikbaar voorbeeld tegenkom. De implementatie van al deze voorbeelden en codefragmenten is te vinden op GitHub - dit is een op Maven gebaseerd project, dus het zou gemakkelijk moeten kunnen worden geïmporteerd en uitgevoerd zoals het is.MyList listMock = Mockito.mock (MyList.class); doThrow (NullPointerException.class) .when (listMock) .clear (); listMock.clear ();
MyList listMock = Mockito.mock (MyList.class); when (listMock.add (anyString ())) .thenReturn (false) .thenThrow (IllegalStateException.class); listMock.add (randomAlphabetic (6)); listMock.add (randomAlphabetic (6)); // genereert de uitzondering
MyList-instantie = nieuwe MyList (); MyList spy = Mockito.spy (instantie); doThrow (NullPointerException.class) .when (spy) .size (); spy.size (); // genereert de uitzondering
MyList listMock = Mockito.mock (MyList.class); wanneer (listMock.size ()). thenCallRealMethod (); assertThat (listMock.size (), equalTo (1));
MyList listMock = Mockito.mock (MyList.class); doAnswer (aanroep -> "Altijd hetzelfde"). when (listMock) .get (anyInt ()); String element = listMock.get (1); assertThat (element, is (equalTo ("Altijd hetzelfde")));
3. Conclusie