必要なメソッドはMockito#verifyです:
public static <T> T verify(T mock,
VerificationMode mode)
mock
あなたの嘲笑オブジェクトがあるとmode
されるVerificationMode
モックが検証されるべき方法を説明しています。可能なモードは次のとおりです。
verify(mock, times(5)).someMethod("was called five times");
verify(mock, never()).someMethod("was never called");
verify(mock, atLeastOnce()).someMethod("was called at least once");
verify(mock, atLeast(2)).someMethod("was called at least twice");
verify(mock, atMost(3)).someMethod("was called at most 3 times");
verify(mock, atLeast(0)).someMethod("was called any number of times"); // useful with captors
verify(mock, only()).someMethod("no other method has been called on the mock");
メソッドとこれらの検証モードMockito
を使用するには、クラスからのこれらの静的インポートが必要ですverify
。
import static org.mockito.Mockito.atLeast;
import static org.mockito.Mockito.atLeastOnce;
import static org.mockito.Mockito.atMost;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.only;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
したがって、あなたの場合、正しい構文は次のようになります:
Mockito.verify(mock, times(4)).send()
これにより、モックされたオブジェクトでメソッドsend
が4回呼び出されたことを確認できます。呼び出された回数が4回未満または4回を超えると失敗します。
確認したいだけの場合、メソッドが一度呼び出された場合は、を渡す必要はありませんVerificationMode
。シンプルな
verify(mock).someMethod("was called once");
十分でしょう。内部的に使用しverify(mock, times(1)).someMethod("was called once");
ます。
同じモックで複数の検証呼び出しを行い、「間」の検証を行うことができます。Mockitoはこのようなものをサポートしていませんverify(mock, between(4,6)).someMethod("was called between 4 and 6 times");
が、
verify(mock, atLeast(4)).someMethod("was called at least four times ...");
verify(mock, atMost(6)).someMethod("... and not more than six times");
代わりに、同じ動作を得るために。境界が含まれているため、メソッドが4、5、または6回呼び出されたときのテストケースは緑色です。
Mockito.verify(mock, times(4)).send()
。send()
メソッド内でメソッド呼び出しを「移動」したのはなぜでしょうかverify
。あなたはすでに正しい構文を持っていました。