Mockito.any() для <t>
Я хочу высмеять метод с сигнатурой как:
public <T> T documentToPojo(Document mongoDoc, Class<T> clazz)
Я издеваюсь над ним, как показано ниже:
Mockito.when(mongoUtil.documentToPojo(Mockito.any(Document.class), Mockito.any(WorkItemDTO.class)))
Но я получаю ошибку как:
Метод documentToPojo(Document, Class<T>)
в типе MongoUtil
не применим для аргументов (Document, WorkItemDTO)
Есть ли способ в Mockito, который поможет мне издеваться над T?
Ответы
Ответ 1
Обратите внимание, что documentToPojo
воспринимает класс как второй аргумент. any(Foo.class)
возвращает аргумент типа Foo
, а не типа Class<Foo>
, тогда как eq(WorkItemDTO.class)
должен возвращать Class<WorkItemDTO>
как ожидалось. Я бы сделал это так:
when(mongoUtil.documentToPojo(
Mockito.any(Document.class),
Mockito.eq(WorkItemDTO.class))).thenReturn(...);
Ответ 2
Вы можете сопоставить общий аргумент Class<T>
используя просто any( Class.class )
, например:
Mockito.when( mongoUtil.documentToPojo( Mockito.any( Document.class ),
Mockito.any( Class.class ) ) );
Ура,
Ответ 3
Вы можете сделать это, используя ArgumentMatchers.any() с типом, например:
Mockito.when(
mongoUtil.documentToPojo(
Mockito.any(Document.class),
ArgumentMatchers.<Class<WorkItemDTO>>any()
)
).thenReturn(...);