Mockito.any() 对于 <T>

Mockito.any() for <T>

我想模拟一个签名为的方法:

public <T> T documentToPojo(Document mongoDoc, Class<T> clazz)

我模拟如下:

Mockito.when(mongoUtil.documentToPojo(Mockito.any(Document.class), Mockito.any(WorkItemDTO.class)))

但我收到错误:

类型 MongoUtil 中的方法 documentToPojo(Document, Class<T>) 不适用于参数 (Document, WorkItemDTO)

Mockito 中是否有任何方法可以帮助我模拟 T?

您可以使用简单的 any( Class.class ) 匹配通用 Class<T> 参数,例如:

Mockito.when( mongoUtil.documentToPojo( Mockito.any( Document.class ),
                                        Mockito.any( Class.class ) ) );

干杯,

请注意,documentToPojoClass 作为其第二个参数。 any(Foo.class) return 是 Foo 类型的参数,而不是 Class<Foo> 类型的参数,而 eq(WorkItemDTO.class) 应该 return 是预期的 Class<WorkItemDTO> .我会这样做:

when(mongoUtil.documentToPojo(
    Mockito.any(Document.class),
    Mockito.eq(WorkItemDTO.class))).thenReturn(...);

您可以使用符合类型的 ArgumentMatchers.any() 来完成,如下所示:

Mockito.when(
    mongoUtil.documentToPojo(
        Mockito.any(Document.class),
        ArgumentMatchers.<Class<WorkItemDTO>>any()
    )
).thenReturn(...);