Spottende unntak Kasting med Mockito
1. Oversikt
I denne raske opplæringen - fokuserer vi på hvordan du konfigurerer et metodeanrop for å kaste et unntak med Mockito.
For mer informasjon om biblioteket, sjekk også Mockito-serien vår.
Her er en enkel ordboksklasse vi bruker i disse eksemplene:
klasse MyDictionary {private Map wordMap = new HashMap (); public void add (String word, String meaning) {wordMap.put (word, meaning); } public String getMeaning (String word) {return wordMap.get (word); }}
2. Ikke-Tomrom Returtype
For det første, hvis vår returtype ikke er tomrom Vi kan bruke når (). deretter Kast ():
@Test (forventet = NullPointerException.class) offentlig ugyldig nårConfigNonVoidRetunMethodToThrowEx_thenExIsThrown () {MyDictionary dictMock = mock (MyDictionary.class); når (dictMock.getMeaning (anyString ())) .thenThrow (NullPointerException.class); dictMock.getMeaning ("ord"); }
Legg merke til at vi konfigurerte getMeaning () metode - som returnerer en verdi av typen String - å kaste en NullPointerException når du blir ringt.
3. Tomrom Returtype
Nå, hvis metoden vår kommer tilbake tomrom, vi bruker doTrow ():
@Test (forventet = IllegalStateException.class) offentlig ugyldig nårConfigVoidRetunMethodToThrowEx_thenExIsThrown () {MyDictionary dictMock = mock (MyDictionary.class); doThrow (IllegalStateException.class) .when (dictMock) .add (anyString (), anyString ()); dictMock.add ("word", "meaning"); }
Her konfigurerte vi en legge til() metode - som returnerer tomrom - å kaste IllegalStateException når du blir ringt.
Vi kan ikke bruke når (). deretter Kast () med tomrom returtype slik kompilatoren ikke tillater det tomrom metoder i parentes.
4. Unntak som objekt
Om å konfigurere unntaket i seg selv, kan vi passere unntakets klasse som i våre tidligere eksempler eller som et objekt:
@Test (forventet = NullPointerException.class) offentlig ugyldig nårConfigNonVoidRetunMethodToThrowExWithNewExObj_thenExIsThrown () {MyDictionary dictMock = mock (MyDictionary.class); når (dictMock.getMeaning (anyString ())) .thenThrow (ny NullPointerException ("Feil oppstod")); dictMock.getMeaning ("ord"); }
Og vi kan gjøre det samme med doTrow () også:
@Test (forventet = IllegalStateException.class) offentlig ugyldig nårConfigVoidRetunMethodToThrowExWithNewExObj_thenExIsThrown () {MyDictionary dictMock = mock (MyDictionary.class); doThrow (ny IllegalStateException ("Feil oppstod")). når (dictMock) .add (anyString (), anyString ()); dictMock.add ("word", "meaning"); }
5. Spion
Vi kan også konfigurere Spion å kaste et unntak på samme måte som vi gjorde med spotten:
@Test (forventet = NullPointerException.class) offentlig ugyldig givenSpy_whenConfigNonVoidRetunMethodToThrowEx_thenExIsThrown () {MyDictionary dict = new MyDictionary (); MyDictionary spion = Mockito.spy (dict); når (spy.getMeaning (anyString ())) .thenTrow (NullPointerException.class); spy.getMeaning ("ord"); }
6. Konklusjon
I denne artikkelen undersøkte vi hvordan du konfigurerer metodeanrop for å kaste et unntak i Mockito.
Som alltid kan hele kildekoden finnes på GitHub.