Mockito Quand / Alors Cookbook
1. Vue d'ensemble
Ce livre de recettes montrehow to use Mockito to configure behavior dans une variété d'exemples et de cas d'utilisation.
Lesformat of the cookbook is example focused et pratiques - pas de détails et d'explications superflus nécessaires.
Et bien sûr, si vous voulez en savoir plus sur les bons tests avec Mockito, jetez un œil àthe other Mockito articles here.
Lectures complémentaires:
Mockito Vérifier le livre de recettes
Exemples, utilisation et bonnes pratiques deMockito Verify.
Mockito - Utiliser des espions
Faire bon usage des Spies dans Mockito et leur différence entre les espions et les fous.
Mockito Mock Méthodes
Ce tutoriel illustre diverses utilisations des méthodes statiques factices standard de l'API Mockito.
Nous allons être l'implémentation democking a simple list - 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 vraie méthode 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 fictif 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é - surGoogle Guava,Hamcrest etnow Mockito. L’objectif est d’avoir ces informations facilement accessibles en ligne et de les compléter chaque fois que je rencontre un nouvel exemple utile.
L'implémentation de tous ces exemples et extraits de codecan be found over on GitHub - il s'agit d'un projet basé sur Maven, il devrait donc être facile à importer et à exécuter tel quel.