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>
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 :
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>
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!