Testen unbestimmter Antworten in Mockito
Beim Testen von asynchronem Code, der unbestimmte Antworten beinhaltet, wie sie beispielsweise von einem ExecutorCompletionService erhalten werden, ist dies erforderlich Verspotten Sie nichtdeterministisches Methodenverhalten. In diesem Szenario kann eine Methode bei nachfolgenden Aufrufen mit denselben Argumenten unterschiedliche Objekte zurückgeben.
Um dies in Mockito zu erreichen, verwenden Sie die thenReturn-Methode mit mehreren Argumenten. Die Syntax lautet:
when(method-call).thenReturn(value1, value2, value3);
Sie können beliebig viele Argumente angeben, alle vom gleichen Typ. Der erste Wert wird beim ersten Methodenaufruf zurückgegeben, der zweite beim zweiten und so weiter. Sobald alle Werte zurückgegeben wurden, wird der letzte Wert weiterhin für nachfolgende Aufrufe zurückgegeben.
Der folgende Code zeigt beispielsweise, wie eine Methode getestet wird, die einen ExecutorCompletionService aufruft, um Aufgaben abzurufen:
// 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); }
In diesem Beispiel gibt die Take-Methode zunächst Task1, dann Task2 und schließlich Task3 für die ersten drei Aufrufe zurück. Danach wird für alle nachfolgenden Aufrufe derselbe Wert (task3) zurückgegeben. Dies ermöglicht das Testen nichtdeterministischer Antworten und gleichzeitig die Überprüfung, dass das Ergebnis konstant bleibt.
Das obige ist der detaillierte Inhalt vonWie kann man nichtdeterministisches Methodenverhalten in Mockito verspotten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!