Java mockito - 如何在循环中添加 return 语句?

use*_*426 1 junit mockito

when(/* some method call*/).thenReturn(mockFetchReturn).thenReturn(mockFetchReturn2)
            .thenReturn(mockFetchReturn3);
Run Code Online (Sandbox Code Playgroud)

这工作正常,我可以使用不同的输出调用模拟方法三次。但是我的输出列表可以针对每个测试场景进行更改,并且我找不到如何根据不同的返回在循环中完成此操作。例如,如果我传递 10 个 mockFetchReturn3 对象的列表,那么应该有 10 个 return 语句。

tkr*_*use 5

只需对评论中提供的答案进行编码:

OngoingStubbing stubbing = when(/* some method call*/);
for (int i = 0; ...) {
   stubbing = stubbing.thenReturn(mockFetchReturn(i));
}
Run Code Online (Sandbox Code Playgroud)

或者,您可以将列表传递给

List<String> answers = Arrays.asList(mockFetchReturn, mockFetchReturn, ...);
when(/* some method call*/).thenAnswer(AdditionalAnswers.returnsElementsOf(logEntryList));
Run Code Online (Sandbox Code Playgroud)

另请参阅类似问题