Quelle est la différence entre les objets de type Mock et Spy dans les tests ?
sobes.tech IA
Réponse de l'IA
Dans les tests Java, les objets Mock et Spy sont utilisés pour simuler le comportement des dépendances, mais ils présentent des différences clés:
-
Mock : c'est un objet entièrement simulé qui n'appelle pas de méthodes réelles. Son comportement est entièrement configurable dans le test. Il est utilisé lorsque vous souhaitez isoler la classe testée de ses dépendances.
-
Spy : c'est un objet partiellement simulé qui appelle les méthodes réelles si aucune autre configuration n'est spécifiée. Il permet de suivre les appels aux méthodes réelles et, si nécessaire, de remplacer certaines d'entre elles.
Exemple avec Mockito:
List<String> list = new ArrayList<>();
List<String> spyList = Mockito.spy(list);
spyList.add("one");
Mockito.verify(spyList).add("one");
List<String> mockList = Mockito.mock(List.class);
mockList.add("one");
Mockito.verify(mockList).add("one");
Dans mockList, la méthode add n'ajoutera pas d'élément à la liste, mais dans spyList, elle l'ajoutera, sauf si son comportement a été redéfini.