Как настроить Mockito mock для использования одного и того же ответа для нескольких вызовов разных методов - PullRequest
0 голосов
/ 16 января 2019

Я хочу протестировать слой 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())

1 Ответ

0 голосов
/ 16 января 2019

Вы можете хранить ссылки на методы, а затем перебирать их

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());
}

Этот тест работает и проходит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...