Come verificare che un metodo venga chiamato due volte con mockito confirm ()


307

Voglio verificare se un metodo viene chiamato almeno una volta tramite verifica mockito. Ho usato verifica e si lamenta in questo modo:

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

Risposte:


519

Utilizzando la modalità di verifica appropriata:

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
È inoltre possibile utilizzare Mockito.times(...)invece VerificationModeFactory.times(...)per l'importazione statica
Wim Deblauwe

26
import static org.mockito.Mockito.times;. Generalmente l'importazione di pacchetti con "interno" in essi ( import static org.mockito.internal.verification.VerificationModeFactory.times;) è sconsigliata.
Roger,

c'è un altro modo di scrivere i tempi (1)?
Glenn Bech,

1
@GlennBech Puoi semplicemente ometterlo , è implicito; il valore predefinito verify(mockObject).someMethod("")cerca esattamente 1 interazione (niente di più, niente di meno). Se, invece, si desidera almeno una chiamata del metodo, è possibile utilizzare l' atLeastOnce()identificatore.
nbrooks

1
@Roger Sono d'accordo con te, per un praticante TDD principiante come me, l'importazione statica mi rende più confuso nel ricordare i metodi o quale framework sta usando (Mockito, Espresso o semplicemente un normale test unitario).
Pensa due volte al codice una volta il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.