Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

InvalidUseOfMatchersException

Estou recebendo InvalidUseOfMatchersException quando tento fazer o uso do anyString() matcher para o valor do parâmetro mensagem do método falha() que fica no RespostaListener. Quando eu coloco uma string hard-coded funciona. Alguém poderia me dizer o porquê ?

@Test
    public void deve_MostraMensagemDeFalha_QuandoFalharEnvioDeLanceParaAPI() {
        doAnswer(new Answer() {
            @Override
            public Object answer(InvocationOnMock invocation) {
                RespostaListener<Void> listener = invocation.getArgument(2);
                listener.falha(anyString());
                return null;
            }

        }).when(client).propoe(any(Lance.class), anyLong(), any(RespostaListener.class));

        enviadorDeLance.envia(leilao, mock(Lance.class));

        verify(dialogManager).mostraToastFalhaNoEnvio();
    }

A interface:

public interface RespostaListener<T> {
    void sucesso(T resposta);
    void falha(String mensagem);
}

Log: Invalid use of argument matchers! 0 matchers expected, 1 recorded

1 resposta
solução!

Oi William, quando a gente trabalha com mocks é irresistível usarmos anyString, porém apesar do nome esse código não deve ser usado em locais onde precisamos de uma String de verdade. Na realidade o método anyString deve ser usado em situações que precisamos de um curinga para comparações.

É por isso que o Mockito dá erro. Você está chamando um método que serve para comparar Strings, mas não disse com o que ele deve ser comparado. E aqui nem faz sentido essa comparação, pois nem o Mockito esperava uma verificação (0 matchers expected, 1 recorded).

Ou seja, quando precisamos de Strings de verdade, devemos deixá-las explícitas no código. Usamos anyString somente em situações de comparação nas nossas verificações (assert ou verify).

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software