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!