Mockito: argThat для методов, принимающих несколько аргументов - PullRequest
0 голосов
/ 15 июня 2019

Я пытаюсь использовать ArgThat API от Mockito:

verify(mockService).methodA(argThat((List ids, int b) -> ids.get(0).equals("123")));

mockService имеет methodA, который принимает два параметра: список и простое целое число.

Но это дает мне ошибку:

«Несовместимые типы параметров в лямбда-выражении».

Причина в том, что метод совпадений ArgumentMatcher принимает только один аргумент.

Так, как я могу сделать проверку для таких сценариев?

1 Ответ

2 голосов
/ 15 июня 2019

Вы должны использовать argThat подстановочный знак для каждого из входов:

verify(mockService).methodA(argThat((List ids) -> ids.get(0).equals("123"))
          , argThat((int b) -> b < 1);

Я бы также предложил вам использовать @ArgumentCaptor, который является альтернативой argThat и делает это пользовательское соответствие более понятным: javadoc . Особенно, если вам нужно использовать оба параметра в одном и том же условном выражении.

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