Maison > Java > javaDidacticiel > Comment se moquer des méthodes Void dans Mockito : un guide pour doThrow, doAnswer, doNothing et doReturn ?

Comment se moquer des méthodes Void dans Mockito : un guide pour doThrow, doAnswer, doNothing et doReturn ?

Susan Sarandon
Libérer: 2024-12-17 03:06:26
original
428 Les gens l'ont consulté

How to Mock Void Methods in Mockito:  A Guide to doThrow, doAnswer, doNothing, and doReturn?

Mocking Void Methods avec Mockito

Lorsqu'il s'agit de modèles d'observateurs, les méthodes moqueuses avec des types de retour void peuvent présenter des défis. Un de ces cas est de rencontrer des difficultés pour se moquer d'une classe avec une méthode comme addListener, qui renvoie void.

Pour se moquer d'une méthode sans valeur de retour, Mockito fournit un ensemble de méthodes : doThrow(), doAnswer(), doNothing() et doReturn(). Ces méthodes vous permettent de spécifier le comportement de la méthode simulée.

Par exemple, pour spécifier que la méthode addListener lève une exception lorsqu'elle est appelée, vous pouvez utiliser :

Mockito.doThrow(new Exception()).when(instance).addListener(any(Listener.class));
Copier après la connexion

Alternativement, vous peut enchaîner plusieurs comportements ensemble. Par exemple, le code suivant lève une exception lors du premier appel à addListener, puis ne fait rien lors des appels suivants :

Mockito.doThrow(new Exception()).doNothing().when(instance).addListener(any(Listener.class));
Copier après la connexion

Dans la classe World fournie, vous pouvez vous moquer de la méthode setState à l'aide de la méthode doAnswer, comme ci-dessous :

World mockWorld = mock(World.class);
doAnswer(new Answer<Void>() {
    public Void answer(InvocationOnMock invocation) {
        Object[] args = invocation.getArguments();
        System.out.println("called with arguments: " + Arrays.toString(args));
        return null;
    }
}).when(mockWorld).setState(anyString());
Copier après la connexion

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