Se moquer uniquement d'un appel de méthode spécifique dans la superclasse avec Mockito
Lors de la réalisation de tests unitaires à l'aide de Mockito, il peut être nécessaire de se moquer uniquement d'un appel spécifique appel à une méthode dans une superclasse tout en laissant les autres appels inchangés. Considérez le scénario suivant :
<code class="java">class BaseService { public void save() {...} } public Childservice extends BaseService { public void save(){ //some code super.save(); } }</code>
Dans cet exemple, vous souhaitez vous moquer uniquement de l'appel à super.save() dans la classe ChildService, en préservant le comportement de l'autre appel de méthode save().
Solution utilisant l'espionnage et le stubbing
Bien que le refactoring puisse être une solution viable, elle n'est pas toujours réalisable. Dans de tels cas, vous pouvez tirer parti des techniques d'espionnage et de stubbing pour obtenir le comportement moqueur souhaité :
<code class="java">@Test public void testSave() { ChildService classToTest = Mockito.spy(new ChildService()); // Prevent/stub logic in super.save() Mockito.doNothing().when((BaseService)classToTest).validate(); // When classToTest.save(); // Then verify(classToTest).load(); }</code>
Explication :
En utilisant l'espionnage et le stubbing, vous pouvez simuler efficacement le comportement moqueur souhaité, vous permettant ainsi de tester des appels de méthode spécifiques au sein des superclasses tout en préservant la fonctionnalité d'origine.
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!