Maison > Java > javaDidacticiel > Comment se moquer uniquement d'un appel de méthode spécifique dans une superclasse avec Mockito ?

Comment se moquer uniquement d'un appel de méthode spécifique dans une superclasse avec Mockito ?

Patricia Arquette
Libérer: 2024-10-31 06:17:02
original
1081 Les gens l'ont consulté

How to Mock Only a Specific Method Call in a Superclass with Mockito?

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>
Copier après la connexion

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>
Copier après la connexion

Explication :

  1. Créer une instance de ChildService classe utilisant la méthode spy() de Mockito. Cela crée un objet espion qui peut être utilisé pour se moquer sélectivement des méthodes.
  2. Stub la méthode dans la superclasse dont vous ne voulez pas vous moquer. Cela se fait en utilisant Mockito.doNothing(). Dans l'exemple, la méthode validate() de la superclasse est stubbée.
  3. Effectuez l'action sur l'objet espion (dans ce cas, en appelant save()).
  4. Vérifiez que la méthode spécifique un appel a été effectué sur l'objet espion (dans ce cas, load() est vérifié).

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!

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