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