Respostas:
Existe uma maneira segura de digitar: use ArgumentMatchers.any()e qualifique-a com o tipo:
ArgumentMatchers.<AsyncCallback<ResponseX>>any()
(Matchers.<AsyncCallback<ResponseX>>any()
Matchersestá realmente obsoleto, mas ArgumentMatchersfuncionou.
Usando o Java 8, você pode simplesmente usar any()(assumindo importação estática) sem argumento ou parâmetro de tipo devido à inferência de tipo aprimorada. O compilador agora sabe do tipo de destino (o tipo do argumento do método) que você realmente quer dizer Matchers.<AsyncCallback<ResponseX>>any(), que é a solução pré-Java 8.
any()combinaria AsyncCallback<AnyOtherType>?
AsyncCallback<AnyOtherType>nem deve ser compilado se o tipo de argumento for 'AsyncCallback <ResponseX>'.
when(x.y(any())).thenAnswer(...)por exemplo, onde yestá public <T> T y(AsyncCallback<T> arg). Talvez seja melhor verificar o tipo na resposta, se é isso que é necessário?
isA(). Se o objeto contiver um Classobjeto correspondente ao tipo e a interface expuser isso, acho que você poderá verificá-lo em um correspondente personalizado. Ou, por exemplo, no caso de um, Collectionvocê pode verificar o tipo dos elementos.
Matchersfoi substituído por ArgumentMatchersno Mockito v2
Eu tive que adotar o seguinte mecanismo para permitir genéricos:
import static org.mockito.Matchers.any;
List<String> list = any();
when(callMyMethod.getResult(list)).thenReturn(myResultString);
Espero que isso ajude alguém.
Você pode simplesmente transmiti-lo, adicionando avisos de supressão, se desejar:
@SuppressWarnings("unchecked")
AsyncCallback<ResponseX> callback = Mockito.any(AsyncCallback.class)
Se o Java permitisse genéricos 'genéricos', eles poderiam ter um método como este, que é o que você está procurando
private static <T, E> T<E> mock(Class<T<E>> clazz)
You cannot use argument matchers outside of verification or stubbing.
@SuppressWarnings: pré-java 8, se você fosse atribuí-lo a uma variável separada, você poderia usar any()como na resposta do INtoy. Agora, com o java 8, any()pode ser usado em linha sem a necessidade de uma atribuição separada.
Eu tive um problema semelhante usando o Spring Example:
Mockito.when(repo.findAll(Mockito.<Example<SrvReqToSupplierComment>>any()))
.thenReturn(Lists.emptyList());
Aqui, você deve usar a qualificação, o método findAll b / c pode levar vários tipos, como Sorte Iterable. Você também pode usar, é Mockito.any(Example.class)claro, com o aviso de segurança de tipo.