[英]Mockito.any() for <T>
I want to mock a method with signature as:我想模拟一个带有签名的方法:
public <T> T documentToPojo(Document mongoDoc, Class<T> clazz)
I mock it as below:我嘲笑它如下:
Mockito.when(mongoUtil.documentToPojo(Mockito.any(Document.class), Mockito.any(WorkItemDTO.class)))
But I get error as:但我得到的错误是:
The method documentToPojo(Document, Class<T>)
in the type MongoUtil
is not applicable for the arguments (Document, WorkItemDTO)
MongoUtil
类型中的方法documentToPojo(Document, Class<T>)
不适用于参数(Document, WorkItemDTO)
Is there any method in Mockito which will help me mock for T? Mockito 中是否有任何方法可以帮助我模拟 T?
Note that documentToPojo
takes a Class as its second argument.请注意,
documentToPojo
将Class作为其第二个参数。 any(Foo.class)
returns an argument of type Foo
, not of type Class<Foo>
, whereas eq(WorkItemDTO.class)
should return a Class<WorkItemDTO>
as expected. any(Foo.class)
返回Foo
类型的参数,而不是Class<Foo>
类型的参数,而eq(WorkItemDTO.class)
应该按预期返回Class<WorkItemDTO>
。 I'd do it this way:我会这样做:
when(mongoUtil.documentToPojo(
Mockito.any(Document.class),
Mockito.eq(WorkItemDTO.class))).thenReturn(...);
You can match a generic Class<T>
argument using simply any( Class.class )
, eg.:您可以使用简单的
any( Class.class )
来匹配通用Class<T>
参数,例如:
Mockito.when( mongoUtil.documentToPojo( Mockito.any( Document.class ),
Mockito.any( Class.class ) ) );
Cheers,干杯,
You can do it using ArgumentMatchers.any() qualified with the type, like so:您可以使用带有类型限定的 ArgumentMatchers.any() 来完成,如下所示:
Mockito.when(
mongoUtil.documentToPojo(
Mockito.any(Document.class),
ArgumentMatchers.<Class<WorkItemDTO>>any()
)
).thenReturn(...);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.