<T>的Mockito.any()

Raj*_*ure 23 java unit-testing mockito mongodb-java springmockito

我想用签名模拟一个方法:

    public <T> T documentToPojo(Document mongoDoc, Class<T> clazz)
Run Code Online (Sandbox Code Playgroud)

我嘲笑它如下:

    Mockito.when(mongoUtil.documentToPojo(Mockito.any(Document.class), Mockito.any(WorkItemDTO.class)))
Run Code Online (Sandbox Code Playgroud)

但我得到的错误是:

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

Mockito有什么方法可以帮我模拟T吗?

Jef*_*ica 34

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

when(mongoUtil.documentToPojo(
    Mockito.any(Document.class),
    Mockito.eq(WorkItemDTO.class))).thenReturn(...);
Run Code Online (Sandbox Code Playgroud)

  • 它不适合我。我正在使用 Java 8 和 Mockito 2.7.5 (3认同)

And*_*rup 5

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

Mockito.when( mongoUtil.documentToPojo( Mockito.any( Document.class ),
                                        Mockito.any( Class.class ) ) );
Run Code Online (Sandbox Code Playgroud)

干杯,

  • Mockito.any 对 T 不起作用,我在我的问题中提到了它。 (2认同)