Mockito: проверка с общими параметрами - PullRequest
62 голосов
/ 30 мая 2011

С Mockito я могу сделать следующее:

verify(someService).process(any(Person.class));

Но как мне написать это, если вместо process вместо Collection<Person>?Не могу понять, как правильно написать.Просто получаю синтаксические ошибки ...

Ответы [ 4 ]

107 голосов
/ 30 мая 2011

Попробуйте:

verify(someService).process(Matchers.<Collection<Person>>any());

На самом деле IntelliJ автоматически предложил это исправление, когда я набрал any() ... К сожалению, вы не можете использовать статический импорт в этом случае.

25 голосов
/ 18 сентября 2013

Попробуйте:

verify(someService).process(anyCollectionOf(Person.class));

С версии 1.8 Mockito представляет

public static <T> Collection<T> anyCollectionOf(Class<T> clazz);
1 голос
/ 06 апреля 2016

если вы используете собственный метод, вы можете даже использовать статический импорт:

private Collection<Person> anyPersonCollection() {
    return any();
}

Тогда вы можете использовать

verify(someService).process(anyPersonCollection());
0 голосов
/ 30 мая 2011

Вы не можете выразить это из-за стирания типа.Даже если бы вы могли выразить это в коде, у Mockito не было возможности проверить это во время выполнения.Вместо этого вы можете создать интерфейс типа

interface PersonCollection extends Collection<Person> { /* nothing */ }

и использовать его в своем коде.

Редактировать: я ошибся, у Mockito есть anyCollectionOf (..) , чточто ты хочешь.

...