Mocking Výnimka hádzanie pomocou Mockito

1. Prehľad

V tomto rýchlom výučbe sa zameriame na to, ako nakonfigurovať volanie metódy tak, aby vyvolalo výnimku s Mockitom.

Viac informácií o knižnici nájdete tiež v našej sérii Mockito.

Tu je jednoduchá trieda slovníka, ktorú použijeme v týchto príkladoch:

trieda MyDictionary {súkromná mapa wordMap = nová HashMap (); public void add (Reťazcové slovo, Význam reťazca) {wordMap.put (slovo, význam); } public String getMeaning (String word) {return wordMap.get (word); }}

2. Non-Neplatný Typ vrátenia

Po prvé, ak naša metóda návratového typu nie je neplatný môžeme použiť when (). thenThrow ():

@Test (očakáva sa = NullPointerException.class) public void whenConfigNonVoidRetunMethodToThrowEx_thenExIsThrown () {MyDictionary dictMock = mock (MyDictionary.class); keď (dictMock.getMeaning (anyString ())) .thThThrow (NullPointerException.class); dictMock.getMeaning ("slovo"); } 

Všimli sme si, že sme nakonfigurovali getMeaning () metóda - ktorá vráti hodnotu typu String - hodiť a NullPointerException pri volaní.

3. Neplatný Typ vrátenia

Teraz, ak sa naša metóda vráti neplatný, použijeme doThrow ():

@Test (očakáva sa = IllegalStateException.class) public void whenConfigVoidRetunMethodToThrowEx_thenExIsThrown () {MyDictionary dictMock = mock (MyDictionary.class); doThrow (IllegalStateException.class) .when (dictMock) .add (anyString (), anyString ()); dictMock.add ("slovo", "význam"); }

Tu sme nakonfigurovali pridať () metóda - ktorá sa vracia neplatný - hodiť IllegalStateException pri volaní.

Nemôžeme použiť when (). thenThrow () s neplatný návratový typ, pretože kompilátor to neumožňuje neplatný metódy v zátvorkách.

4. Výnimka ako objekt

O konfigurácii samotnej výnimky môžeme triedu výnimky odovzdať ako v našich predchádzajúcich príkladoch alebo ako objekt:

@Test (očakáva sa = NullPointerException.class) public void whenConfigNonVoidRetunMethodToThrowExWithNewExObj_thenExIsThrown () {MyDictionary dictMock = mock (MyDictionary.class); when (dictMock.getMeaning (anyString ())) .thenThrow (new NullPointerException ("Došlo k chybe")); dictMock.getMeaning ("slovo"); }

A to isté môžeme urobiť s doThrow () tiež:

@Test (expect = IllegalStateException.class) public void whenConfigVoidRetunMethodToThrowExWithNewExObj_thenExIsThrown () {MyDictionary dictMock = mock (MyDictionary.class); doThrow (new IllegalStateException ("Vyskytla sa chyba")) .when (dictMock) .add (anyString (), anyString ()); dictMock.add ("slovo", "význam"); }

5. Špión

Môžeme tiež nakonfigurovať Špión vyhodiť výnimku rovnakým spôsobom, ako sme to urobili s falošným:

@Test (očakáva sa = NullPointerException.class) verejné neplatné dané Spy_whenConfigNonVoidRetunMethodToThrowEx_thenExIsThrown () {MyDictionary dict = new MyDictionary (); MyDictionary spy = Mockito.spy (diktát); keď (spy.getMeaning (anyString ())) .thThThrow (NullPointerException.class); spy.getMeaning ("slovo"); }

6. Záver

V tomto článku sme skúmali, ako nakonfigurovať volania metód tak, aby vyvolali výnimku v Mockito.

Celý zdrojový kód nájdete ako vždy na GitHub.


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