У меня есть подпись функции, которую я хотел бы посмеяться над внешней службой.
public <T> void save(T item, AnotherClass anotherClassObject);
С учетом сигнатуры этой функции и имени класса IGenericService
как можно посмеяться над ней с помощью PowerMock?
Или Мокито?
Для этого универсального я использую: Класс Theodore
для T в T item
. Например, я попытался использовать:
doNothing().when(iGenericServiceMock.save(any(Theodore.class),
any(AnotherClass.class));
IntelliJ проворачивает это:
save(T, AnotherClass) cannot be applied to
(org.Hamcrest.Matcher<Theodore>, org.Hamcrest.Matcher<AnotherClass>)
И приводит следующую причину:
reason: No instance(s) of type variable T exist
so that Matcher<T> conforms to AnotherClass
Во-первых, проблему следует решить, если аргумент обобщений обрабатывается правильно. Что можно сделать в таких ситуациях?
ОБНОВЛЕНИЕ: Как ETO поделился:
doNothing().when(mockedObject).methodToMock(argMatcher);
постигла та же участь.