org.mockito.exceptions.misusing.InvalidUseOfMatchersException: недопустимое использование сопоставителей аргументов! 2 ожидаемых матча, 3 записанных - PullRequest
0 голосов
/ 30 мая 2020

Я знаю, что на этой платформе его спрашивали несколько раз. Я также проверил решение при условии, что используются все необработанные параметры или все аргументы Matcher. В моем случае Argument Matcher (any, anyString) использовался для всех параметров, но все еще получал ошибку.

Код:

Mockito.when(service.createReq(Mockito.any(RequestDto.class))).thenReturn(Mockito.any(TermReq.class));
Mockito.when(utils.sendPOSTRequest(Mockito.anyString(),Mockito.anyString())).thenReturn(Mockito.anyString());

Ошибка в строке выше:

org.mockito.exceptions.misusing.InvalidUseOfMatchersException: 
Invalid use of argument matchers!
2 matchers expected, 3 recorded:

Может кто-нибудь указать, в чем может быть проблема.

Спасибо,

Ответы [ 2 ]

1 голос
/ 30 мая 2020

Вы не можете вернуть сопоставление аргументов из имитируемого метода, например thenReturn(Mockito.any(TermReq.class)). Это недопустимое использование.

Вы должны вернуть фактическое значение или фиксатор аргумента.

0 голосов
/ 30 мая 2020

Если вы хотите имитировать возвращаемое значение метода, вы должны решить, какой объект вернется после предложения when. Вы не можете вернуть новый сопоставитель аргументов. Я советую возвращать новый объект-имитатор в вашем тестовом сценарии, например:

TermReq termReq = Mockito.mock(TermReq.class);  // create mock
Mockito.when(termReq.getId()).thenReturn(1L) // mock required get methods
Mockito.when(service.createReq(Mockito.any(RequestDto.class))).thenReturn(termReq); // then return in case of the service method call

С этим стилем использования вы можете обрабатывать или сравнивать результаты с макетными объектами.

...