我想用签名模拟一个方法:
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?
答案 0 :(得分:33)
请注意,documentToPojo
将 Class 作为其第二个参数。 any(Foo.class)
返回Foo
类型的参数,而不是Class<Foo>
类型的参数,而eq(WorkItemDTO.class)
应按预期返回Class<WorkItemDTO>
。我这样做:
when(mongoUtil.documentToPojo(
Mockito.any(Document.class),
Mockito.eq(WorkItemDTO.class))).thenReturn(...);
答案 1 :(得分:4)
您可以使用简单Class<T>
匹配通用any( Class.class )
参数,例如:
Mockito.when( mongoUtil.documentToPojo( Mockito.any( Document.class ),
Mockito.any( Class.class ) ) );
干杯,
答案 2 :(得分:0)
您可以使用符合类型的ArgumentMatchers.any()来做到这一点,就像这样:
Mockito.when(
mongoUtil.documentToPojo(
Mockito.any(Document.class),
ArgumentMatchers.<Class<WorkItemDTO>>any()
)
).thenReturn(...);