在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中文網其他相關文章!