Respuestas:
Hay una forma segura de tipo: utilícela ArgumentMatchers.any()y califíquela con el tipo:
ArgumentMatchers.<AsyncCallback<ResponseX>>any()
(Matchers.<AsyncCallback<ResponseX>>any()
Matchersen realidad está en desuso, pero ArgumentMatchersfuncionó.
Con Java 8, simplemente puede usar any()(suponiendo importación estática) sin argumento o parámetro de tipo debido a la inferencia de tipo mejorada. El compilador ahora sabe por el tipo de destino (el tipo de argumento del método) lo que realmente quiere decir Matchers.<AsyncCallback<ResponseX>>any(), que es la solución anterior a Java 8.
any()coincidiría AsyncCallback<AnyOtherType>tan bien?
AsyncCallback<AnyOtherType>ni siquiera debería compilar si el tipo de argumento es 'AsyncCallback <ResponseX>'.
when(x.y(any())).thenAnswer(...)por ejemplo, dónde yestá public <T> T y(AsyncCallback<T> arg). Quizás sería mejor verificar el tipo en la respuesta, si eso es lo que se necesita.
isA(). Si el objeto contiene un Classobjeto correspondiente al tipo, y la interfaz lo expone, supongo que podría verificarlo en un comparador personalizado. O, por ejemplo, en el caso de Collectionque pueda comprobar el tipo de los elementos.
Matchersfue reemplazado por ArgumentMatchersen Mockito v2
Tuve que adoptar el siguiente mecamismo para permitir los genéricos:
import static org.mockito.Matchers.any;
List<String> list = any();
when(callMyMethod.getResult(list)).thenReturn(myResultString);
Espero que esto ayude a alguien.
Publicar un comentario de pierrefevrier como respuesta, lo que podría ser útil si se presenta en una respuesta en lugar de comentarios.
Con nuevas versiones de Mockito: (Matchers.<AsyncCallback<ResponseX>>any()
Puede lanzarlo, agregando advertencias de supresión si lo desea:
@SuppressWarnings("unchecked")
AsyncCallback<ResponseX> callback = Mockito.any(AsyncCallback.class)
Si Java permitiera genéricos 'genéricos', podrían tener un método como este, que es lo que está buscando
private static <T, E> T<E> mock(Class<T<E>> clazz)
You cannot use argument matchers outside of verification or stubbing.
@SuppressWarnings: pre-java 8, si fuera a asignarlo a una variable separada, podría usarlo any()como en la respuesta de INtoy. Ahora con Java 8, any()se puede usar en línea sin la necesidad de una asignación por separado.
Tuve un problema similar al usar Spring Example:
Mockito.when(repo.findAll(Mockito.<Example<SrvReqToSupplierComment>>any()))
.thenReturn(Lists.emptyList());
Aquí, debe usar la calificación, el método b / c findAll puede tomar varios tipos, como Sorty Iterable. También puede utilizar, Mockito.any(Example.class)por supuesto, con el tipo de advertencia de seguridad.