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:

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");

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.