Estou tentando verificar se um método (nulo) está sendo chamado dentro de um DAO - estou usando um ponto de confirmação que envia uma lista de resultados até esse ponto, redefine a lista e continua. Digamos que eu tenha 4 itens na lista e eu tenho um ponto de confirmação 1, eu esperaria que o método "send" fosse chamado 4 vezes. Posso verificar se o método é chamado uma vez escrevendo
Mockito.verify(mock).send()
passa .. mas quero verificar o número de vezes que foi chamado. Eu pensaria que
Mockito.verify(mock.send(), times(4))
seria suficiente, mas diz que os parâmetros não estão corretos para verificação.
Aliás, se eu mudar Mockito.verify(mock).send()
para Mockito.verify(mock.send())
ou Mockito.verify((mock).send())
receber o mesmo erro. Pensamentos sobre isso?
Mockito.verify(mock, times(4)).send()
. Gostaria de saber por que você "moveu" asend()
chamada doverify
método dentro do método. Você já tinha a sintaxe correta.verify(mock, atLeastOnce()).send();
Mockito.verify(mock).send()
passou, mas encapsulá-lo causou um erro, que nada muda. no entanto, é uma vitória!Respostas:
O método necessário é o Mockito # Verifique :
mock
é o seu objeto simulado emode
é oVerificationMode
que descreve como a simulação deve ser verificada. Os modos possíveis são :Você precisará destas importações estáticas da
Mockito
classe para usar overify
método e estes modos de verificação:Portanto, no seu caso, a sintaxe correta será:
Isso verifica se o método
send
foi chamado 4 vezes no objeto simulado. Ele falhará se for chamado menos ou mais de 4 vezes.Se você quiser apenas verificar se o método foi chamado uma vez, não será necessário passar a
VerificationMode
. Um simplesseria o suficiente. Ele usa internamente
verify(mock, times(1)).someMethod("was called once");
.É possível ter várias chamadas de verificação no mesmo simulador para obter uma verificação "entre". Mockito não suporta algo assim
verify(mock, between(4,6)).someMethod("was called between 4 and 6 times");
, mas podemos escreverem vez disso, para obter o mesmo comportamento. Os limites estão incluídos , portanto o caso de teste fica verde quando o método foi chamado 4, 5 ou 6 vezes.
fonte
VerificationMode
estão os métodos (para importação estática ou referência explícita), eles estãoorg.mockito.internal.verification.VerificationModeFactory
.verify(mock, atLeast(0)).someMethod("was called any number of times");
foi útil ignorar uma verificação de chamadaverify(between(m,n))
que verifica o número de chamadas entre m e n?verify
para momentos comatLeast(M)
eatMost(n)
obter o mesmo comportamento. Eu editei a resposta para explicar isso.VerificationModeFactory
. Ainda está disponível na versão mais recente, mas concordo que classes internas não devem ser usadas.