Опять же, как объединить несколько mockito OngoingStubbing с логическим «и» / «или»? - PullRequest
0 голосов
/ 26 марта 2019

Я делаю некоторые меры при тестировании с помощью mockito, как это:

private void serviceCallSuccess() {
    when(mTmdbWebService.highestRatedMovies()).thenReturn("abc");
    when(mTmdbWebService.newestMovies()).thenReturn("abc");
    when(mTmdbWebService.popularMovies()).thenReturn("abc");
}

И они работали, однако код такой длинный.Я хочу объединить эти вышеперечисленные условия для более чистого теста.Примерно так:

when(
     mTmdbWebService.highestRatedMovies()
     OR mTmdbWebService.newestMovies()
     OR mTmdbWebService.popularMovies()
     ).thenReturn("abc");

Я нашел здесь некоторый код для объединения функций в .thenReturn, но это не совсем то, что мне нужно. Как объединить несколько сопоставителей Mockito с логическими "и" / "или"?

1 Ответ

0 голосов
/ 26 марта 2019

Одним из подходов может быть определение собственного поведения по умолчанию для макета:

List<String> methodsToMock =
    Arrays.asList("highestRatedMovies", "newestMovies", "popularMovies");

mTmdbWebService = mock(TmdbWebService.class, invocationOnMock -> {
    Method mockedMethod = invocationOnMock.getMethod();
    if (methodsToMock.contains(mockedMethod.getName()) &&                
        mockedMethod.getParameterCount() == 0 &&
        mockedMethod.getReturnType().equals(String.class)) {
        return "abc";
    }
    return null;
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...