Livre de recettes Mockito Verify

1. Vue d'ensemble

Ce livre de recettes illustre comment utiliser Mockito verify dans une variété 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.

Nous allons nous moquer d'une simple implémentation de liste :

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

2. Le livre de recettes

vérifier une invocation simple sur une simulation

List mockedList = mock(MyList.class); mockedList.size(); verify(mockedList).size();

vérifier le nombre d'interactions avec la simulation

List mockedList = mock(MyList.class); mockedList.size(); verify(mockedList, times(1)).size();

vérifier qu'aucune interaction avec l'ensemble de la maquette ne s'est produite

List mockedList = mock(MyList.class); verifyZeroInteractions(mockedList);

vérifier qu'aucune interaction avec une méthode spécifique ne s'est produite

List mockedList = mock(MyList.class); verify(mockedList, times(0)).size();

vérifiez qu'il n'y a pas d'interactions inattendues - cela devrait échouer:

List mockedList = mock(MyList.class); mockedList.size(); mockedList.clear(); verify(mockedList).size(); verifyNoMoreInteractions(mockedList);

vérifier l'ordre des interactions

List mockedList = mock(MyList.class); mockedList.size(); mockedList.add("a parameter"); mockedList.clear(); InOrder inOrder = Mockito.inOrder(mockedList); inOrder.verify(mockedList).size(); inOrder.verify(mockedList).add("a parameter"); inOrder.verify(mockedList).clear();

vérifier qu'une interaction ne s'est pas produite

List mockedList = mock(MyList.class); mockedList.size(); verify(mockedList, never()).clear();

vérifier qu'une interaction s'est produite au moins un certain nombre de fois

List mockedList = mock(MyList.class); mockedList.clear(); mockedList.clear(); mockedList.clear(); verify(mockedList, atLeast(1)).clear(); verify(mockedList, atMost(10)).clear();

vérifier l'interaction avec l'argument exact

List mockedList = mock(MyList.class); mockedList.add("test"); verify(mockedList).add("test");

vérifier l'interaction avec flexible / n'importe quel argument

List mockedList = mock(MyList.class); mockedList.add("test"); verify(mockedList).add(anyString());

vérifier l'interaction à l'aide de la capture d'arguments

List mockedList = mock(MyList.class); mockedList.addAll(Lists. newArrayList("someElement")); ArgumentCaptor argumentCaptor = ArgumentCaptor.forClass(List.class); verify(mockedList).addAll(argumentCaptor.capture()); List capturedArgument = argumentCaptor.
    
      getValue(); assertThat(capturedArgument, hasItem("someElement"));
    

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.