【发布时间】:2022-07-14 00:19:55
【问题描述】:
我希望 Mockito 模拟在模拟上调用同一个函数时一个接一个地返回多个值,并让这些值来自一个列表,而不是通过将它们写成 mock.thenReturn(1).thenReturn(2)
一种方法是滚动我自己的函数:
class A{
public int getVal() {return 0;}
}
class OneTest {
static void makeMockReturnSomeObjects(A mock, List<Integer> returnValues ) {
OngoingStubbing<Integer> stubbing = Mockito.when(mock.getVal());
for (Integer integer : returnValues) {
stubbing = stubbing.thenReturn(integer);
}
}
@Test
void test() {
A mock = Mockito.mock(A.class);
makeMockReturnSomeObjects(mock, List.of(1,2,3));
System.out.println(mock.getVal()); // prints 1
System.out.println(mock.getVal()); // prints 2
System.out.println(mock.getVal()); // prints 3
}
}
是否有内置的 api 或更好的方法来实现这一点?
【问题讨论】:
-
this answer 适合您吗?应该可以正常使用有序列表。
-
效果很好。如果您想将其发布为答案,我会接受。
标签: java unit-testing mockito stubbing