Mockito Quand / Puis Cookbook

1. Vue d'ensemble

Ce livre de recettes montre comment utiliser Mockito pour configurer le comportement dans une variété d'exemples et de cas d'utilisation.

Le format du livre de cuisine est axé sur l'exemple et pratique - aucun détail ni explication superflue n'est nécessaire.

Et bien sûr, si vous voulez en savoir plus sur les bons tests avec Mockito, jetez un œil aux autres articles de Mockito ici.

Nous allons nous moquer d'une simple implémentation de liste - la même implémentation que nous avons utilisée dans le livre de recettes précédent:

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

2. Livre de recettes

configurer un comportement de retour simple pour une simulation

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

configurer le comportement de retour pour la simulation d'une manière alternative

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

configure mock pour lever une exception sur un appel de méthode

@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)); }

configurer le comportement d'une méthode avec le type de retour void - pour lever une exception

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

configurer le comportement de plusieurs appels

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

configurer le comportement d'un espion

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

configurez la méthode pour appeler la méthode réelle sous-jacente sur un simulacre

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

configurer un appel de méthode fictive avec une réponse personnalisée

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. Conclusion

Ce format est une expérience - je publie certains de mes livres de recettes de développement interne sur un sujet donné - sur Google Guava, Hamcrest et maintenant Mockito . Le but est d'avoir ces informations facilement accessibles en ligne - et d'y ajouter chaque fois que je rencontre un nouvel exemple utile.

L'implémentation de tous ces exemples et extraits de code peut être trouvée sur GitHub - il s'agit d'un projet basé sur Maven, il devrait donc être facile à importer et à exécuter tel quel.