Метод насмешки, если один аргумент является необработанным, а другой может быть из списка - PullRequest
1 голос
/ 23 апреля 2020

Я хочу проверить, был ли метод вызван X раз с одним необработанным аргументом и другими аргументами из списка. Я нашел этот метод:

    Mockito.verify(mock,Mockito.times(3)).myMethod(Mockito.eq("lastName"),
                   Mockito.argThat(Matchers.isOneOf("firstName","name","firstName"))));

Однако это жалуется, что argThat метод требует ArgumentMatcher, но Matchers.isOneOf возвращает org.hamcrest.Matcher

Есть ли другой способ, которым я мог бы добиться этого?

Спасибо за помощь!

1 Ответ

1 голос
/ 23 апреля 2020

Это изменилось в Mockito 2.1.0. На веб-сайте Mockito есть этот совет по миграции.

Все существующие пользовательские реализации ArgumentMatcher больше не будут компилироваться. Все местоположения, в которых сопоставители хамкрестов передаются в argThat(), больше не будут компилироваться. Есть 2 подхода для решения проблем:

a) Переведите приспособление для подголовника в устройство сопоставления Mockito: используйте implements ArgumentMatcher вместо extends ArgumentMatcher. Затем преобразуйте метод describeTo() в метод toString().

б) Используйте org.mockito.hamcrest.MockitoHamcrest.argThat() вместо Mockito.argThat(). Убедитесь, что есть зависимость Hamcrest от пути к классам (Mockito больше не зависит от Hamcrest).

Какой вариант подходит именно вам? Если вы не возражаете против зависимости компиляции от hamcrest, тогда вариант b), вероятно, подходит вам. Ваш выбор не должен иметь большого влияния и является полностью обратимым - вы можете выбрать другой вариант в будущем (и изменить код)

...