unit test mock example java unit-testing mockito mongodb-java springmockito

java - mock - spring boot test repository



Mockito.any() para<T> (2)

Puede hacer coincidir un argumento genérico de Class<T> usando simplemente any( Class.class ) , por ejemplo:

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

Aclamaciones,

Quiero burlarme de un método con firma como:

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

Me burlo de la siguiente manera:

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

Pero me sale un error como:

El método documentToPojo(Document, Class<T>) en el tipo MongoUtil no es aplicable para los argumentos (Document, WorkItemDTO)

¿Hay algún método en Mockito que me ayude a burlarse de T?


Tenga en cuenta que documentToPojo toma una Clase como segundo argumento. any(Foo.class) devuelve un argumento de tipo Foo , no de tipo Class<Foo> , mientras que eq(WorkItemDTO.class) debe devolver una Class<WorkItemDTO> como se esperaba. Lo haría de esta manera:

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