Como verificar se um método é chamado duas vezes com mockito confirm ()

307

Eu quero verificar se um método é chamado pelo menos uma vez através de mockito verificar. Eu usei o check e ele reclama assim:

org.mockito.exceptions.verification.TooManyActualInvocations: 
Wanted 1 time:
But was 2 times. Undesired invocation:
Ahmad Beg
fonte

Respostas:

519

Usando o VerificationMode apropriado:

import static org.mockito.Mockito.atLeast;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;

verify(mockObject, atLeast(2)).someMethod("was called at least twice");
verify(mockObject, times(3)).someMethod("was called exactly three times");
Liosan
fonte
22
Você também pode usar Mockito.times(...)em vez de VerificationModeFactory.times(...)para a importação estática
Wim Deblauwe
26
import static org.mockito.Mockito.times;. Geralmente, importar pacotes com "interno" neles ( import static org.mockito.internal.verification.VerificationModeFactory.times;) é desencorajado.
Roger
existe outra maneira de escrever tempos (1)?
Glenn Bech
1
@ GlennBech Você pode simplesmente omitir isso , está implícito; o padrão verify(mockObject).someMethod("")procura exatamente 1 interação (nem mais nem menos). Se, em vez disso, você desejar pelo menos uma chamada do método, poderá usar oatLeastOnce() especificador.
nbrooks
1
@ Roger Eu concordo com você, para um praticante de TDD iniciante como eu, a importação estática me deixa mais confusa sobre lembrar os métodos ou qual estrutura está usando (Mockito, Espresso ou apenas teste de unidade normal).
Pense duas vezes no código uma vez