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 konfigurirati ponašanje višestrukih poziva konfigurirati ponašanje špijuna configure metoda za lažni poziv prave, temeljne metode konfigurirati lažni poziv metode s prilagođenim odgovorom 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.MyList listMock = Mockito.mock (MyList.class); doThrow (NullPointerException.class) .when (listMock) .clear (); listMock.clear ();
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
Primjer MyList = novi MyList (); MyList špijun = Mockito.spy (instanca); doThrow (NullPointerException.class) .when (špijun) .size (); špijun.size (); // bacit će iznimku
MyList listMock = Mockito.mock (MyList.class); kada (listMock.size ()). thenCallRealMethod (); assertThat (listMock.size (), jednakTo (1));
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