Có cách nào để có phương thức gốc được trả về các đối tượng khác nhau trên lời gọi tiếp theo không? Tôi muốn làm điều này để kiểm tra các câu trả lời không xác định từ một số ExecutorCompletionService
. tức là để kiểm tra không phân biệt thứ tự trả về của các phương thức, kết quả vẫn không thay đổi.Sử dụng Mockito với nhiều cuộc gọi đến cùng một phương thức với cùng một đối số
Mã tôi đang tìm kiếm để kiểm tra trông giống như thế này.
// Create an completion service so we can group these tasks together
ExecutorCompletionService<T> completionService =
new ExecutorCompletionService<T>(service);
// Add all these tasks to the completion service
for (Callable<T> t : ts)
completionService.submit(request);
// As an when each call finished, add it to the response set.
for (int i = 0; i < calls.size(); i ++) {
try {
T t = completionService.take().get();
// do some stuff that I want to test
} catch (...) { }
}
oooh, gọn gàng. các tài liệu nói về câu trả lời như là chỉ cho void, nhưng điều này là tuyệt vời! – Emma
Điều đó thực sự giúp ích rất nhiều khi đưa ra các phương thức void cần phải cung cấp câu trả lời cho callbacks, trong đó không thể sử dụng 'thenReturn (val1, val2, ...) 'đơn giản hơn. Cảm ơn nhiều! –
Là một tùy chọn khác cho câu trả lời ở trên, bạn cũng có thể kết hợp các phương thức doAnswer với nhau. Vì vậy, khi (someMock.someMethod()) doAnswer (new Answer1()). DoAnswer (new Answer2()); ' –