web-dev-qa-db-ja.com

<T>のMockito.any()

次のようなシグネチャを持つメソッドをモックしたい:

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

私は以下のようにそれをm笑します:

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

しかし、私は次のようなエラーを受け取ります:

タイプMongoUtilのメソッドdocumentToPojo(Document, Class<T>)は、引数_(Document, WorkItemDTO)_には適用されません

MockitoにTのモックに役立つメソッドはありますか?

23

documentToPojoは、2番目の引数としてClassを取ることに注意してください。 any(Foo.class)は_Class<Foo>_型ではなくFoo型の引数を返しますが、eq(WorkItemDTO.class)は期待どおり_Class<WorkItemDTO>_を返す必要があります。私はこのようにします:

_when(mongoUtil.documentToPojo(
    Mockito.any(Document.class),
    Mockito.eq(WorkItemDTO.class))).thenReturn(...);
_
34
Jeff Bowman

単にany( Class.class )を使用して、汎用のClass<T>引数と一致させることができます。例:

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

乾杯、

4