我想测试Spring Boot Rest应用程序的http层。为此,该服务嘲笑了控制器的呼叫。
由于我有很多方法(例如findBy ...)期望服务返回一个列表,所以我想立即存根所有调用,并且所有这些都应由相同的答案回答。
其中之一是:
when(someService.getAll()).thenReturn(listOfSomeElements);
在Mockito中是否可以为多个都接受相同答案的呼叫设置相同答案?像
when(someService.getAll(), someService.getSome(), someService.getFew()).thenReturn(listOfSomeElements);
或
doReturn(listOfSomeElements).when(someService.getAll()).when( someService.getSome()).when(someService.getFew())
答案 0 :(得分:2)
您可以存储方法引用,然后对其进行迭代
interface Foo {
String foo();
}
interface Bar {
String bar();
}
@Mock
Foo mockFoo;
@Mock
Bar mockBar;
@Test
public void someTest()
{
List<Supplier<String>> suppliers = Arrays.asList(mockFoo::foo, mockBar::bar);
for (Supplier<String> supplier : suppliers)
{
when(supplier.get()).thenReturn("Blah");
}
assertEquals("Blah", mockFoo.foo());
assertEquals("Blah", mockBar.bar());
}
此测试可运行并通过。