Maison > Java > javaDidacticiel > le corps du texte

Comment se moquer des comportements de méthodes non déterministes dans Mockito ?

Mary-Kate Olsen
Libérer: 2024-10-28 04:30:02
original
1063 Les gens l'ont consulté

How to Mock Nondeterministic Method Behaviors in Mockito?

Test des réponses non déterminées dans Mockito

Lors du test de code asynchrone impliquant des réponses non déterminées, telles que celles obtenues à partir d'un ExecutorCompletionService, il devient nécessaire de se moquer des comportements de méthodes non déterministes. Dans ce scénario, une méthode peut renvoyer différents objets lors d'appels ultérieurs avec les mêmes arguments.

Pour y parvenir dans Mockito, utilisez la méthode thenReturn avec plusieurs arguments. La syntaxe est la suivante :

when(method-call).thenReturn(value1, value2, value3);
Copier après la connexion

Vous pouvez spécifier autant d'arguments que nécessaire, tous du même type. La première valeur sera renvoyée lors du premier appel de méthode, la seconde lors du second, et ainsi de suite. Une fois que toutes les valeurs ont été renvoyées, la dernière valeur continuera à être renvoyée pour les appels suivants.

Par exemple, le code suivant montre comment tester une méthode qui appelle un ExecutorCompletionService pour récupérer des tâches :

// Arrange
ExecutorCompletionService<T> completionService = mock(ExecutorCompletionService.class);
when(completionService.take()).thenReturn(task1, task2, task3);

// Act
for (int i = 0; i < 3; i++) {
    T task = completionService.take().get();

    // Assert
    assertEquals(expectedTasks[i], task);
}
Copier après la connexion

Dans cet exemple, la méthode take renverra initialement la tâche1, puis la tâche2 et enfin la tâche3 pour les trois premiers appels. Ensuite, la même valeur (task3) sera renvoyée pour tous les appels suivants. Cela permet de tester des réponses non déterministes tout en vérifiant que le résultat reste constant.

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