InvalidUseOfMatchersException: anyList (), чтобы соответствовать списку строки, вызывает исключение - PullRequest
0 голосов
/ 15 сентября 2018

Я хочу протестировать метод, который принимает список строк, выполняет вызов базы данных и возвращает список объектов.

EmployeeServiceTest

when(repository
.findByMessageTypeAndStatusAndMobileInOrderByCreatedDate("confirmed", 
"received", anyList(), new PageRequest(0, 1000)))
.thenReturn(employeeEntities);

Это дает нижеисключение.сопоставление stringList с anyList (), по-видимому, вызывает исключение.

org.mockito.exceptions.misusing.InvalidUseOfMatchersException: 
You cannot use argument matchers outside of verification or stubbing.
Examples of correct usage of argument matchers:
  when(mock.get(anyInt())).thenReturn(null);
  doThrow(new RuntimeException()).when(mock).someVoidMethod(anyObject());
  verify(mock).someMethod(contains("foo"))

Also, this error might show up because you use argument matchers with methods that cannot be mocked.
Following methods *cannot* be stubbed/verified: final/private/equals()/hashCode().
Mocking methods declared on non-public parent classes is not supported.

anyList () для соответствия Список строк вызывает исключение.Есть идеи, почему вызвано исключение?

1 Ответ

0 голосов
/ 15 сентября 2018

Вероятно, ваш employeeService не содержит поддельных EmployeeService.Создайте его, вызвав

EmployeeService employeeService = mock(EmployeeService.class)

вместо создания экземпляра реального класса (не используйте new EmployeeService() здесь).

Обновите после того, как вопрос был расширен: вы смешиваете, как сопоставляются аргументы: первый, второй и четвертый параметры являются обычными объектами, но третий параметр является сопоставителем.Если вы проверяете один аргумент с помощью сопоставителя, вы должны использовать их для каждого аргумента.Существуют сопоставления, которые не являются подстановочными знаками, но проверяют, равен ли аргумент фиксированному значению: оберните остальные аргументы в eq сопоставитель:

when(repository .findByMessageTypeAndStatusAndMobileInOrderByCreatedDate(
    eq("confirmed"),
    eq("received"),
    anyList(),
    eq(new PageRequest(0, 1000))
)).....

Обратите внимание, что вам нужно реализовать правильный метод equalsв классе PageRequest.В противном случае org.mockito.Matchers.eq не сможет успешно сравнить параметры.

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