Metódy falošných pokusov s moockom

1. Prehľad

V tomto krátkom tutoriáli sa zameriavame na výsmech neplatný metódy s Mockitom.

Rovnako ako v prípade iných článkov zameraných na rámec Mockito (napríklad Mockito Verify, Mockito When / Then a Mockito's Mock Methods), Môj zoznam trieda uvedená nižšie sa použije ako spolupracovník v testovacích prípadoch.

Pre tento tutoriál pridáme novú metódu:

public class MyList extends AbstractList {@Override public void add (int index, String element) {// no-op}}

2. Jednoduché zosmiešňovanie a overovanie

Neplatný metódy môžu byť použité s Mockito’s nerob nič(), doThrow (), a doAnswer () metódy, vďaka ktorým sú výsmech a overovanie intuitívne:

@Test public void whenAddCalledVerified () {MyList myList = mock (MyList.class); doNothing (). when (myList) .add (isA (Integer.class), isA (String.class)); myList.add (0, ""); verify (myList, times (1)). add (0, ""); }

Avšak nerob nič() je predvolené správanie Mockita pre neplatný metódy.

Táto verzia whenAddCalledVerified () dosahuje to isté ako vyššie uvedené:

@Test public void whenAddCalledVerified () {MyList myList = mock (MyList.class); myList (0, ""); verify (myList, times (1)). add (0, ""); } 

DoThrow () generuje výnimku:

@Test (očakáva sa = Exception.class) public void givenNull_AddThrows () {MyList myList = mock (MyList.class); doThrow (). when (myList) .add (isA (Integer.class), isNull ()); myList.add (0, null); } 

Kryjeme doAnswer () nižšie.

3. Zachytenie argumentu

Jeden dôvod na prepísanie predvoleného správania pomocou nerob nič() je zachytiť argumenty.

Vo vyššie uvedenom príklade sme použili overiť () metóda na kontrolu argumentov odovzdaných pridať ().

Možno však budeme musieť zachytiť argumenty a urobiť s nimi niečo viac.

V týchto prípadoch používame nerob nič() rovnako ako vyššie, ale s ArgumentCaptor:

@Test public void whenAddCalledValueCaptured () {MyList myList = mock (MyList.class); ArgumentCaptor valueCapture = ArgumentCaptor.forClass (String.class); doNothing (). when (myList) .add (any (Integer.class), valueCapture.capture ()); myList.add (0, "zachytené"); assertEquals ("zachytené", valueCapture.getValue ()); } 

4. Prijatie hovoru príjemcovi Neplatný

Metóda môže vykonávať zložitejšie správanie ako iba pridávať alebo nastavovať hodnotu.

Pre tieto situácie môžeme použiť Mockito’s Odpoveď pridať potrebné správanie:

@Test public void whenAddCalledAnswered () {MyList myList = mock (MyList.class); doAnswer (invokácia -> {Object arg0 = invocation.getArgument (0); Object arg1 = invocation.getArgument (1); assertEquals (3, arg0); assertEquals ("answer me", arg1); return null;}), keď (myList) .add (any (Integer.class), any (String.class)); myList.add (3, „odpovedzte mi“); } 

Ako je vysvetlené v Mockito’s Java 8 Features, používame lambda s Odpoveď definovať vlastné správanie pre pridať ().

5. Čiastočné zosmiešňovanie

Možnosťou sú aj čiastočné výsmechy. Mockito doCallRealMethod () možno použiť na neplatný metódy:

@Test public void whenAddCalledRealMethodCalled () {MyList myList = mock (MyList.class); doCallRealMethod (). when (myList) .add (any (Integer.class), any (String.class)); myList.add (1, "skutočné"); verifikácia (myList, times (1)). add (1, "real"); } 

Týmto spôsobom môžeme zavolať skutočnú metódu a súčasne ju overiť.

6. Záver

V tomto krátkom článku sme sa zaoberali štyrmi rôznymi spôsobmi prístupu neplatný metódy pri testovaní s Mockitom.

Príklady sú ako vždy k dispozícii v tomto projekte GitHub.


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