Maison > Java > javaDidacticiel > Comment pouvez-vous vous moquer d'une classe avec un appel « new() » à l'aide de Mockito ?

Comment pouvez-vous vous moquer d'une classe avec un appel « new() » à l'aide de Mockito ?

Mary-Kate Olsen
Libérer: 2024-10-30 00:23:29
original
703 Les gens l'ont consulté

How Can You Mock a Class with a `new()` Call Using Mockito?

Se moquer d'une classe avec un appel New() à l'aide de Mockito

Les classes héritées instancient souvent des objets en interne, ce qui rend difficile leur test à l'aide de la moquerie des frameworks comme Mockito. Cela devient évident lors de la configuration de dépendances complexes, telles que des contextes de sécurité qui nécessitent une configuration externe.

Considérez l'exemple de classe :

<code class="java">public class TestedClass {
  public LoginContext login(String user, String password) {
    LoginContext lc = new LoginContext("login", callbackHandler);
  }
}</code>
Copier après la connexion

Nous voulons tester cette classe, mais la fonction login() La méthode instancie un objet LoginContext, compliquant la simulation sans refactoriser le code.

Mockito peut-il se moquer du LoginContext ?

Oui, il est possible de se moquer de la classe LoginContext à l'aide de Mockito en tirant parti de la puissante fonctionnalité des espions. Contrairement aux stubs, les espions appellent les méthodes réelles de l'objet espionné (sauf si une méthode a été stubbée).

Utiliser des espions pour se moquer du LoginContext

Pour se moquer du LoginContext sans modifier le code source, nous pouvons utiliser l'approche suivante :

<code class="java">TestedClass tc = spy(new TestedClass());
LoginContext lcMock = mock(LoginContext.class);
when(tc.login(anyString(), anyString())).thenReturn(lcMock);</code>
Copier après la connexion

Conclusion

En employant stratégiquement des espions, nous pouvons nous moquer efficacement des classes qui instancient des objets en interne , même si le code d'origine reste intact. Cette technique nous permet de tester efficacement ces classes et de garantir que leur comportement répond aux attentes.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal