Maison >Java >javaDidacticiel >Comment se moquer des méthodes vides dans Mockito ?

Comment se moquer des méthodes vides dans Mockito ?

DDD
DDDoriginal
2024-12-08 03:15:11975parcourir

How to Mock Void Methods in Mockito?

Se moquer des méthodes Void avec Mockito

Comment peut-on se moquer des méthodes avec un type de retour void à l'aide du framework Mockito ? Cette question particulière se pose fréquemment dans les scénarios où une méthode objet ne renvoie pas de valeur mais effectue à la place une action.

Relever le défi

L'API Mockito propose une gamme de options pour gérer cette situation, y compris des méthodes comme doThrow(), doAnswer(), doNothing() et doReturn().

  • doThrow(Exception) : lance une exception prédéfinie lorsque la méthode fictive est invoquée.
  • doAnswer(Answer) : Permet de définir un comportement personnalisé lorsque la méthode simulée est appelée. L'interface Answer accepte un objet InvocationOnMock et renvoie une valeur appropriée (Void dans ce cas).

Exemple de mise en œuvre

Considérez l'exemple de scénario suivant :

public class World {

    private String state;

    // Setter for state
    public void setState(String s) {
        this.state = s;
    }
} 

public class WorldTest {

    @Test public void testingWorld() {
        World mockWorld = mock(World.class);

        // Mock the setState method using doAnswer
        doAnswer(new Answer<Void>() {
            @Override
            public Void answer(InvocationOnMock invocation) {
                Object[] args = invocation.getArguments();
                System.out.println("Called with arguments: " + Arrays.toString(args));
                return null;
            }
        }).when(mockWorld).setState(anyString());

        // Call the mock method and observe the output
        mockWorld.setState("Mocked");
    }
}

En employant la méthode doAnswer, nous pouvons spécifier un comportement personnalisé pour la méthode mock setState. Dans l'exemple ci-dessus, nous imprimons les arguments passés à la méthode, offrant ainsi une visibilité sur son invocation.

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!

Déclaration:
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