Как использовать anyCollectionOf () Mockito's - PullRequest
2 голосов
/ 16 июня 2011

В ответе на эту тему предложено использовать anyCollectionOf (), однако я не могу заставить его работать Mockito: проверка с помощью общих параметров

У меня есть универсальный класс для хранения двух «версий» одного и того же объекта в целях сравнения

public class ChangedVO<T> {

private T before;
private T after;

/*** Constructors ***/

public ChangedVO() {}

public ChangedVO(T before, T after) {
    this.before = before;
    this.after = after;
}

/*** Getters & setters ***/

...
}

Теперь в моем UnitTest следующий код "работает" ...

verify(emailService, never()).sendBookChangesEmail(Matchers.<List<ChangedVO<BookVO>>>any());

... однако мне интересно знать, как этого можно добиться с помощью anyCollectionOf ()?

1 Ответ

2 голосов
/ 16 июня 2011

Интересное использование Мокито с дженериками.Единственный способ, которым, я думаю, вы можете использовать anyListOf() в этой ситуации, это набрать

verify(emailService, never()).sendBookChangesEmail(anyListOf((Class<ChangedV0<BookV0>>) null));

Вместо того, чтобы передавать экземпляр класса, вы передаете его null.Это не то, как в документации говорится, что вы должны использовать anyListOf(), но в этой конкретной ситуации это похоже на работу.

Проблема заключается в стирании универсального типа в Java, из-за которого вы не можете различить экземпляр

Class<ChangedV0<BookVO>> or
Class<ChangedV0>

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

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