Comprendre la distinction entre doReturn() et when() de Mockito
Lors du développement d'applications Spring MVC, l'utilisation de Mockito pour simuler la couche de service les objets sont une pratique courante. En explorant les capacités de Mockito, il devient évident que doReturn(...).when(...) et when(...).thenReturn(...) semblent remplir la même fonction. Cela soulève la question : y a-t-il une différence entre ces deux méthodes ?
La distinction clé entre doReturn() et when() devient évidente lors de l'utilisation d'objets espionnés (annotés avec @Spy) au lieu de simulacres (annotés avec @ Mock).
doReturn() contre when() avec Spied Objets
Exemple
Considérez le code suivant :
public class MyClass { protected String methodToBeTested() { return anotherMethodInClass(); } protected String anotherMethodInClass() { throw new NullPointerException(); } }
Cas de test :
@Spy private MyClass myClass; // Works fine, does not invoke anotherMethodInClass() doReturn("test").when(myClass).anotherMethodInClass(); // Throws NullPointerException because anotherMethodInClass() is invoked when(myClass.anotherMethodInClass()).thenReturn("test");
En résumé, lors de l'utilisation d'objets espionnés, doReturn() vous permet d'ignorer l'exécution de la méthode et de définir directement la valeur de retour, tandis que when() appelle la méthode réelle avant de renvoyer la valeur souhaitée. Cette compréhension est cruciale lorsque l'on travaille avec des objets espionnés dans Mockito.
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!