Mockito When / Then Kuharica

1. Pregled

Ova kuharica pokazuje kako koristiti Mockito za konfiguriranje ponašanja u raznim primjerima i slučajevima upotrebe.

The format kuharice usmjeren je na primjere i praktično - nisu potrebni strani detalji i objašnjenja.

I naravno, ako želite saznati više o dobrom testiranju s Mockitom, pogledajte ostale Mockito članke ovdje.

Bit ćemo ismijavajući jednostavan popis implementacija - ista implementacija koju smo koristili u prethodnoj kuharici:

javna klasa MyList proširuje AbstractList {@Override public String get (final int index) {return null; } @Preuzmi javnu int veličinu () {return 1; }} 

2. Kuharica

konfigurirati jednostavno vraćanje ponašanja za lažni

MyList listMock = Mockito.mock (MyList.class); kada (listMock.add (anyString ())). thenReturn (false); logička vrijednost dodana = listMock.add (randomAlphabetic (6)); assertThat (dodano, je (netačno));

konfigurirati ponašanje povratka za lažni na alternativni način

MyList listMock = Mockito.mock (MyList.class); doReturn (false) .when (listMock) .add (anyString ()); logička vrijednost dodana = listMock.add (randomAlphabetic (6)); assertThat (dodano, je (netačno));

configure mock za izbacivanje iznimke na poziv metode

@Test (očekuje se = IllegalStateException.class) javna praznina givenMethodIsConfiguredToThrowException_whenCallingMethod_thenExceptionIsThrown () {MyList listMock = Mockito.mock (MyList.class); kada (listMock.add (anyString ())). thenThrow (IllegalStateException.class); listMock.add (randomAlphabetic (6)); }

konfigurirati ponašanje metode s void tipom povratka - za izbacivanje iznimke

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

konfigurirati ponašanje višestrukih poziva

MyList listMock = Mockito.mock (MyList.class); kada (listMock.add (anyString ())). thenReturn (false) .thenThrow (IllegalStateException.class); listMock.add (randomAlphabetic (6)); listMock.add (randomAlphabetic (6)); // bacit će iznimku

konfigurirati ponašanje špijuna

Primjer MyList = novi MyList (); MyList špijun = Mockito.spy (instanca); doThrow (NullPointerException.class) .when (špijun) .size (); špijun.size (); // bacit će iznimku

configure metoda za lažni poziv prave, temeljne metode

MyList listMock = Mockito.mock (MyList.class); kada (listMock.size ()). thenCallRealMethod (); assertThat (listMock.size (), jednakTo (1));

konfigurirati lažni poziv metode s prilagođenim odgovorom

MyList listMock = Mockito.mock (MyList.class); doAnswer (pozivanje -> "Uvijek isto"). when (listMock) .get (anyInt ()); String element = listMock.get (1); assertThat (element, is (jednakTo ("Uvijek isti")));

3. Zaključak

Ovaj je format eksperiment - objavljujem neke od svojih kuharskih knjiga s unutarnjim razvojem o određenoj temi - na Google Guava, Hamcrest i sada Mockito. Cilj je imati ove informacije lako dostupne na mreži - i dodati ih kad god naletim na novi koristan primjer.

Implementacija svih ovih primjera i isječaka koda možete pronaći na GitHubu - ovo je projekt zasnovan na Mavenu, pa bi ga trebalo biti lako uvesti i pokrenuti kakav jest.