Ошибка теста mockito Недопустимое использование сопоставителей аргументов - PullRequest
0 голосов
/ 06 августа 2020

Мне приходилось писать модульные тесты для метода, который вызывает jdbcTemplate.query и возвращает некоторые данные. Кажется, он не работает и выдает исключение.

Вот код.

@Test
    public void NewDealDaoGetClientOwnershipValuesTest() {
        List<OptionView> optionViews = new ArrayList<OptionView>();
        optionViews.add(new OptionView("one", "two"));

        when(jdbcTemplate.query("<some sql query>", newDealDaoImpl.getResultSetExtractor(Mockito.anyString(), Mockito.anyString(), Mockito.anyString()))).thenReturn(optionViews);
        assertEquals(newDealDaoImpl.getClientOwnershipValues(), optionViews);
    }

Сообщение об ошибке

org.mockito.exceptions.misusing.InvalidUseOfMatchersException: 
Invalid use of argument matchers!
2 matchers expected, 3 recorded.
This exception may occur if matchers are combined with raw values:
    //incorrect:
    someMethod(anyObject(), "raw String");
When using matchers, all arguments have to be provided by matchers.
For example:
    //correct:
    someMethod(anyObject(), eq("String by matcher"));

Просто для вашей информации этот метод newDealDaoImpl.getResultSetExtractor принимает 3 аргумента .

1 Ответ

1 голос
/ 06 августа 2020

Проблема в том, что вы используете сопоставители аргументов:

Mockito.anyString()

на объекте, которым не управляет Mockito (mock, spy et c.)

Попробуйте передать пустую строку или другое случайное значение на ваш:

newDealDaoImpl.getResultSetExtractor(...)
...