when method interactions example java generics parameters verification mockito

java - method - Mockito: Verificando con parámetros genéricos



spy mockito method (4)

Con Mockito puedo hacer lo siguiente:

verify(someService).process(any(Person.class));

¿Pero cómo escribo esto si el process toma una Collection<Person> lugar? No puedo entender cómo escribirlo correctamente. Solo obtengo errores de sintaxis ...


No puede expresar esto debido a la borradura de tipo. Incluso si pudieras expresarlo en código, Mockito no tuvo oportunidad de comprobarlo en tiempo de ejecución. Podrías crear una interfaz como

interface PersonCollection extends Collection<Person> { /* nothing */ }

en su lugar y usa esto a través de tu código.

Editar: Estaba equivocado, Mockito tiene anyCollectionOf(..) que es lo que quieres.


Tratar :

verify(someService).process(anyCollectionOf(Person.class));

Desde la versión 1.8 Mockito presenta

public static <T> Collection<T> anyCollectionOf(Class<T> clazz);


Tratar:

verify(someService).process(Matchers.<Collection<Person>>any());

En realidad, IntelliJ sugirió automáticamente esta corrección cuando escribí any() ... Desafortunadamente no puede usar la importación estática en este caso.


si usa un método propio, incluso puede usar la importación estática:

private Collection<Person> anyPersonCollection() { return any(); }

Entonces puedes usar

verify(someService).process(anyPersonCollection());