web-dev-qa-db-fra.com

Mockito.any () pour <T>

Je veux me moquer d'une méthode avec signature comme:

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

Je me moque comme ci-dessous:

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

Mais je reçois une erreur comme:

La méthode documentToPojo(Document, Class<T>) de type MongoUtil n'est pas applicable pour les arguments (Document, WorkItemDTO)

Y a-t-il une méthode dans Mockito qui m'aidera à me moquer de T?

23
Rajesh Kolhapure

Notez que documentToPojo prend un Class comme deuxième argument. any(Foo.class) renvoie un argument de type Foo, pas de type Class<Foo>, tandis que eq(WorkItemDTO.class) doit renvoyer un Class<WorkItemDTO> comme prévu. Je le ferais de cette façon:

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

Vous pouvez faire correspondre un argument générique Class<T> En utilisant simplement any( Class.class ), par exemple:

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

À votre santé,

4