O método necessário é o Mockito # Verifique :
public static <T> T verify(T mock,
VerificationMode mode)
mock
é o seu objeto simulado e mode
é o VerificationMode
que descreve como a simulação deve ser verificada. Os modos possíveis são :
verify(mock, times(5)).someMethod("was called five times");
verify(mock, never()).someMethod("was never called");
verify(mock, atLeastOnce()).someMethod("was called at least once");
verify(mock, atLeast(2)).someMethod("was called at least twice");
verify(mock, atMost(3)).someMethod("was called at most 3 times");
verify(mock, atLeast(0)).someMethod("was called any number of times"); // useful with captors
verify(mock, only()).someMethod("no other method has been called on the mock");
Você precisará destas importações estáticas da Mockito
classe para usar o verify
método e estes modos de verificação:
import static org.mockito.Mockito.atLeast;
import static org.mockito.Mockito.atLeastOnce;
import static org.mockito.Mockito.atMost;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.only;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
Portanto, no seu caso, a sintaxe correta será:
Mockito.verify(mock, times(4)).send()
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 simples
verify(mock).someMethod("was called once");
seria 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 escrever
verify(mock, atLeast(4)).someMethod("was called at least four times ...");
verify(mock, atMost(6)).someMethod("... and not more than six times");
em 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.
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.