Maison > Java > javaDidacticiel > le corps du texte

Comment tester des classes avec des appels `new()` intégrés à l'aide de Mockito Spies ?

Mary-Kate Olsen
Libérer: 2024-10-27 12:48:29
original
813 Les gens l'ont consulté

How to Test Classes with Embedded `new()` Calls Using Mockito Spies?

Test des classes avec des appels new() intégrés à l'aide de Mockito

Considérez une classe héritée (TestedClass) qui instancie un objet LoginContext à l'aide d'un appel direct new() :

<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

Tester cette classe peut être difficile lorsque le LoginContext L'instanciation nécessite des configurations de sécurité JAAS spécifiques. Pour résoudre ce problème, nous explorons l'utilisation de Mockito pour se moquer de la classe LoginContext sans modifier le code source d'origine.

Utilisation des espions Mockito

Mockito fournit un mécanisme pratique appelé espions qui nous permet de créer des espions d'objets réels, qui exécutent les méthodes suivantes :

  • Les méthodes réelles sont appelées par défaut (sauf si elles sont individuellement stubbées).
  • Les espions peuvent être utilisés avec prudence pour les scénarios de code hérité.

Pour tester notre classe avec les espions, nous pouvons introduire le code suivant :

<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

Ce code crée un espion de l'instance TestedClass (tc ) et se moque de la classe LoginContext via lcMock. L'instruction when() supprime la méthode login() pour renvoyer le LoginContext simulé.

L'emploi d'espions nous permet de tester la classe d'origine sans altérer son mécanisme d'appel new(), offrant une approche de test flexible et efficace.

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!