首頁  >  文章  >  Java  >  如何在 Mockito 中模擬非確定性方法行為?

如何在 Mockito 中模擬非確定性方法行為?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-28 04:30:02988瀏覽

How to Mock Nondeterministic Method Behaviors in Mockito?

在Mockito 中測試不確定響應

當測試涉及不確定響應的非同步程式碼時,例如從ExecutorCompletionService 獲得的響應,有必要模擬非確定性方法行為。在這種情況下,一個方法可能會在使用相同參數進行後續呼叫時傳回不同的物件。

要在 Mockito 中實現此目的,請使用具有多個參數的 thenReturn 方法。語法為:

when(method-call).thenReturn(value1, value2, value3);

您可以根據需要指定任意數量的參數,所有參數的類型相同。第一個值將在第一個方法呼叫時傳回,第二個值將在第二個方法呼叫時返回,依此類推。傳回所有值後,後續呼叫將繼續傳回最後一個值。

例如,以下程式碼示範如何測試呼叫ExecutorCompletionService 來擷取任務的方法:

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

在此範例中,前三個呼叫的take 方法會先傳回任務1,然後返回任務2,最後返回任務3。之後,所有後續呼叫都將傳回相同的值(task3)。這允許測試不確定性響應,同時驗證結果保持不變。

以上是如何在 Mockito 中模擬非確定性方法行為?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn