メソッドを確認する方法はmockito verify()で2回呼び出されます


307

mockito verifyでメソッドが少なくとも1回呼び出されているかどうかを確認したい。私は確認を使用しました、そしてそれはこのように不平を言います:

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

回答:


519

適切なVerificationModeを使用する:

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
静的インポートのMockito.times(...)代わりに使用することもできますVerificationModeFactory.times(...)
Wim Deblauwe '24

26
import static org.mockito.Mockito.times;。通常、「内部」が含まれるパッケージ(import static org.mockito.internal.verification.VerificationModeFactory.times;)のインポートはお勧めしません。
ロジャー

times(1)を記述する別の方法はありますか?
Glenn Bech 2017

1
@GlennBech 単に省略できますが、それは暗黙的です。デフォルトでverify(mockObject).someMethod("")は、正確に1つのインタラクションが検索されます(それ以上でもそれ以下でもありません)。代わりに、メソッドの少なくとも1つの呼び出しが必要な場合は、atLeastOnce()指定子を使用できます。
nbrooks 2017

1
@ロジャー私はあなたに同意します。私のような最初のTDD実践者にとって、静的インポートは、メソッドまたはどのフレームワークが使用しているか(Mockito、Espresso、または通常の単体テスト)を覚えるのがもっと混乱します。
2017
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.