logo

Mock contre Stub contre Spy

Se moquer

Les mocks sont les objets qui stockent les appels de méthode. Il fait référence aux wrappers dynamiques pour les dépendances utilisées dans les tests. Il est utilisé pour enregistrer et vérifier l'interaction entre les classes Java. Une simulation est connue comme la version la plus puissante et la plus flexible des doubles de test. Nous utilisons une méthode pour se moquer qui s'appelle se moquer() .

La fonction principale de l’utilisation des simulations est de donner un contrôle total sur le comportement des objets simulés. Les objets fictifs sont généralement utilisés pour vérification du comportement . Le terme comportement signifie vérifier les méthodes et les chemins corrects appliqués aux objets.

Les simulations sont principalement créées à l'aide d'une bibliothèque ou d'un framework de simulation comme Mockito, JMock et EasyMock. Il est utilisé pour tester une large suite de tests pour lesquels les stubs ne suffisent pas. L'une des fonctions essentielles de mock est que nous pouvons vérifier combien de fois une méthode donnée est appelée.

L'extrait de code suivant montre comment utiliser mock().

 ToDoService doService = mock(ToDoService.class); 

Bout

Les stubs sont les objets qui contiennent des données prédéfinies et les utilisent pour donner des réponses lors des tests. En d’autres termes, un stub est un objet qui ressemble à un objet réel avec le nombre minimum de méthodes nécessaires à un test. Les stubs sont utilisés lorsque nous ne voulons pas utiliser d'objets qui donneraient une réponse avec des données réelles. Un stub est considéré comme la version la plus légère et la plus statique du double de test.

Les principales fonctions des stubs sont :

  • Il renvoie toujours la sortie prédéfinie quelle que soit l'entrée.
  • Il peut être utilisé pour ressembler aux objets de la base de données.
  • Les talons sont utilisés pour réduire les complexités qui surviennent lors de la création des objets réels. Ils sont principalement utilisés pour effectuer vérification d'état .

Espionner

Les espions sont connus sous le nom de objets partiellement simulés . Cela signifie que l'espion crée un objet partiel ou une moitié factice de l'objet réel en écrasant ou en espionnant les vrais. En matière d'espionnage, l'objet réel reste inchangé et nous nous contentons d'en espionner certaines méthodes spécifiques. En d’autres termes, nous prenons l’objet (réel) existant et remplacer ou espionner seulement certaines de ses méthodes.

Les espions sont utiles lorsque nous avons une énorme classe pleine de méthodes et que nous voulons nous moquer de certaines méthodes. Dans ce scénario, nous devrions préférer utiliser des espions plutôt que des moqueries et des talons. Il appelle le comportement réel de la méthode, si les méthodes ne sont pas tronquées.

Dans Mockito, la méthode spy() est utilisée pour créer des objets espions. Cela nous permet d'appeler les méthodes normales de l'objet réel. L'extrait de code suivant montre comment utiliser la méthode spy().

 List spyArrayList = spy(ArrayList.class); 

Différence entre Stub et Mock

Paramètres Bout Se moquer
La source de données La source de données des stubs est codée en dur. Il est généralement étroitement couplé à la suite de tests. Les données sur les simulations sont établies par les tests.
Créé par Les talons sont généralement manuscrits et certains sont générés par des outils. Les simulations sont généralement créées à l'aide de bibliothèques tierces telles que Mockito, JMock et WireMock.
Usage Les stubs sont principalement utilisés pour les suites de tests simples. Les simulations sont principalement utilisées pour les grandes suites de tests.
Interface utilisateur graphique (GUI) Les stubs n'ont pas d'interface graphique. Les simulations ont une interface graphique.

Voici quelques différences entre le faux et l'espion :

Paramètres Se moquer Espionner
Usage Les simulations sont utilisées pour créer des objets entièrement fictifs ou factices. Il est principalement utilisé dans les grandes suites de tests. Les espions sont utilisés pour créer des objets simulés partiels ou à moitié. Comme les simulations, les espions sont également utilisés dans les grandes suites de tests.
Comportement par défaut Lors de l'utilisation d'objets fictifs, le comportement par défaut des méthodes (lorsqu'elles ne sont pas stubbées) est de ne rien faire (n'effectue rien). Lors de l'utilisation d'objets espions, le comportement par défaut des méthodes (lorsqu'elles ne sont pas tronquées) est le comportement réel de la méthode.

Dans nos didacticiels précédents, nous avons abordé quelques exemples de stubbing, de moquerie et d’espionnage. Pour mieux comprendre la différence entre le stubbing, la moquerie et l’espionnage, parcourez les exemples.