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);
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); }
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!