Maison >Java >javaDidacticiel >Mockito Mocking : When() vs doReturn() – Quand dois-je utiliser lequel ?

Mockito Mocking : When() vs doReturn() – Quand dois-je utiliser lequel ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-07 14:11:16386parcourir

Mockito Mocking: When() vs. doReturn() – When Should I Use Which?

Utilisation de Mockito : DoReturn() vs. When()

Dans le domaine de Mockito, deux méthodes émergent avec des similitudes apparentes : doReturn( ) et quand(). Les deux facilitent les fonctionnalités de moquerie d'objets, suscitant la requête : pourquoi avoir besoin de deux méthodes analogues ?

La réponse réside dans leur comportement lorsqu'ils sont utilisés avec des objets espionnés (annotés avec @Spy) par rapport à des objets moqués (annotés avec @Mock). ). Contrairement aux objets simulés, les objets espionnés conservent les implémentations réelles de la méthode de la classe qu'ils étendent.

When() thenReturn() appelle la méthode d'origine avant de remplacer la valeur de retour spécifiée. Par conséquent, les exceptions levées par la méthode doivent être gérées dans le test. Par exemple :

@Spy
private MyClass myClass;

// Continues executing the actual method, potentially throwing an exception
when(myClass.anotherMethodInClass()).thenReturn("test");

DoReturn() when(), en revanche, intercepte complètement l'appel de méthode. Cela empêche l'exécution de la méthode d'origine et élimine le risque d'exceptions :

// Bypasses the actual method call, returning the specified value
doReturn("test").when(myClass).anotherMethodInClass();

Comprendre cette distinction est crucial lorsque l'on travaille avec des objets espionnés. Dans les situations où la méthode espionnée peut déclencher des erreurs, doReturn() offre une alternative sûre à when(), garantissant une expérience de test fluide.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn