Heim >Java >javaLernprogramm >Wie kann man nichtdeterministisches Methodenverhalten in Mockito verspotten?

Wie kann man nichtdeterministisches Methodenverhalten in Mockito verspotten?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-28 04:30:021075Durchsuche

How to Mock Nondeterministic Method Behaviors in Mockito?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn