私は(void)メソッドがDAOの中で呼び出されていることを確認しようとしています - 私はその時点まで結果のリストを送り、リストをリセットしそして続けるコミットポイントを使っています。リストに4つのものがあり、コミットポイントが1であるとすると、 "send"メソッドは4回呼び出されることになります。次のように書くことでメソッドが一度だけ呼び出されることを確認できます
Mockito.verify(mock).send()
それは合格します..しかし、私はそれが呼び出された回数を確認したいです。私はそれを考えるだろう
Mockito.verify(mock.send(), times(4))
十分でしょうが、それは検証にはパラメータが正しくないと言っています。
ちなみに、Mockito.verify(mock).send()
をMockito.verify(mock.send())
またはMockito.verify((mock).send())
に変更しても同じエラーになります。これについての考え?
必要な方法は 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回呼び出されたときのテストケースは緑色です。