Mockito quando / poi ricettario

1. Panoramica

Questo libro di cucina mostra come utilizzare Mockito per configurare il comportamento in una varietà di esempi e casi d'uso.

Il formato del ricettario è incentrato sull'esempio e pratico, non sono necessari dettagli e spiegazioni estranee.

E, naturalmente, se vuoi saperne di più su come testare bene con Mockito, dai un'occhiata agli altri articoli di Mockito qui.

Prenderemo in giro una semplice implementazione dell'elenco , la stessa implementazione che abbiamo usato nel libro di cucina precedente:

public class MyList extends AbstractList { @Override public String get(final int index) { return null; } @Override public int size() { return 1; } } 

2. Ricettario

configurare il comportamento di ritorno semplice per mock

MyList listMock = Mockito.mock(MyList.class); when(listMock.add(anyString())).thenReturn(false); boolean added = listMock.add(randomAlphabetic(6)); assertThat(added, is(false));

configurare il comportamento di ritorno per il mock in un modo alternativo

MyList listMock = Mockito.mock(MyList.class); doReturn(false).when(listMock).add(anyString()); boolean added = listMock.add(randomAlphabetic(6)); assertThat(added, is(false));

configure mock per generare un'eccezione su una chiamata al metodo

@Test(expected = IllegalStateException.class) public void givenMethodIsConfiguredToThrowException_whenCallingMethod_thenExceptionIsThrown() { MyList listMock = Mockito.mock(MyList.class); when(listMock.add(anyString())).thenThrow(IllegalStateException.class); listMock.add(randomAlphabetic(6)); }

configurare il comportamento di un metodo con tipo restituito void - per generare un'eccezione

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

configurare il comportamento di più chiamate

MyList listMock = Mockito.mock(MyList.class); when(listMock.add(anyString())) .thenReturn(false) .thenThrow(IllegalStateException.class); listMock.add(randomAlphabetic(6)); listMock.add(randomAlphabetic(6)); // will throw the exception

configurare il comportamento di una spia

MyList instance = new MyList(); MyList spy = Mockito.spy(instance); doThrow(NullPointerException.class).when(spy).size(); spy.size(); // will throw the exception

configure metodo per chiamare il vero metodo sottostante su un mock

MyList listMock = Mockito.mock(MyList.class); when(listMock.size()).thenCallRealMethod(); assertThat(listMock.size(), equalTo(1));

configurare la chiamata al metodo fittizio con risposta personalizzata

MyList listMock = Mockito.mock(MyList.class); doAnswer(invocation -> "Always the same").when(listMock).get(anyInt()); String element = listMock.get(1); assertThat(element, is(equalTo("Always the same")));

3. Conclusione

Questo formato è un esperimento - sto pubblicando alcuni dei miei libri di cucina di sviluppo interno su un determinato argomento - su Google Guava, Hamcrest e ora Mockito . L'obiettivo è avere queste informazioni prontamente disponibili online e aggiungerle ogni volta che mi imbatto in un nuovo esempio utile.

L'implementazione di tutti questi esempi e frammenti di codice può essere trovata su GitHub : questo è un progetto basato su Maven, quindi dovrebbe essere facile da importare ed eseguire così com'è.