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.