有没有办法在mockito的thenReturn函数中枚举列表中的项目,所以我返回列表中的每个项目.到目前为止我已经这样做了:
List<Foo> returns = new ArrayList<Foo>(); //populate returns list Mockito.when( /* some function is called */ ).thenReturn(returns.get(0),returns.get(1),returns.get(2),returns.get(3));
这完全符合我的要求.每次调用该函数时,它都会从列表中返回一个不同的对象,例如get(1),get(2)等.
但是我希望简化这个并使其对任何大小的列表更具动态性,以防我有一个大小为100的列表.我尝试过这样的事情:
Mockito.when( /* some function is called */ ).thenReturn( for(Foo foo : returns) { return foo; } );
我也试过这个:
Mockito.when(service.findFinancialInstrumentById(eq(1L))).thenReturn( for (int i=0; i<returns.size(); i++) { returns.get(i); } );
但是这不起作用….所以我如何在thenReturn中列举这个列表….我遇到过其他方法喜欢或回答但我不确定哪一个在这种情况下效果最好.
解决方法
这样做的另一种方式(但个人而言,我更喜欢JB Nizet SequenceAnswer的想法),会是这样的……
OngoingStubbing stubbing = Mockito.when(...); for(Object obj : list) { stubbing = stubbing.thenReturn(obj); }