[解決済み] MockitoでJavaのvoidメソッド呼び出しをn回検証する
質問
私は(void)メソッドがDAOの内部で呼び出されていることを確認しようとしています - 私はその時点までの結果のリストを送信し、リストをリセットして継続するコミットポイントを使用しています。 私がリストに4つのものを持ち、私は1のコミットポイントを持っているとすると、私は"send"メソッドが4回呼び出されることを期待します。 このメソッドが1回呼び出されることを確認するには、次のように記述します。
Mockito.verify(mock).send()
は通るのですが、呼び出された回数を確認したいのです。と思うのですが
Mockito.verify(mock.send(), times(4))
で十分なのですが、verifyのためのパラメータが正しくないとのことです。
ちなみに
Mockito.verify(mock).send()
を
Mockito.verify(mock.send())
または
Mockito.verify((mock).send())
同じエラーが出ます。これについてどう思いますか?
解決方法は?
必要な方法は モッキート#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回未満またはそれ以上呼ばれた場合は失敗します。
もし、そのメソッドが一度呼ばれたことがあるかどうかを調べたいだけなら
VerificationMode
. シンプルな
verify(mock).someMethod("was called once");
で十分でしょう。これは内部的に
verify(mock, times(1)).someMethod("was called once");
.
同じモック上で複数の検証呼び出しを行い、"between"検証を実現することは可能です。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回と呼び出された場合、テストケースは緑色になります。
関連
-
javaの模造品QQ WeChatのチャットルーム
-
[解決済み] 整数の平方根が整数であるかどうかを判断する最速の方法
-
[解決済み] Mockitoでvoidメソッドをモックする方法
-
[解決済み] Mockitoを使用して特定のメソッドが呼び出されていないことを確認するにはどうすればよいですか?
-
[解決済み] Mockitoは複数回呼び出されたメソッドの引数をキャプチャできますか?
-
[解決済み] voidメソッドが例外を投げるかどうかをMockitoがテストする
-
[解決済み] モッキート メソッドをスパイしようとすると、元のメソッドが呼び出される
-
[解決済み] Mockito : メソッド内で生成されたオブジェクトでメソッドが呼び出されたことを確認する方法?
-
[解決済み] mockito verify()でメソッドが2回呼び出されたことを確認する方法
-
[解決済み】Mockitoでメソッド呼び出しの順序・順番を検証する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Java のエラーです。未解決のコンパイル問題 解決方法
-
IllegalArgumentException この例外を解決する方法
-
java Mail send email smtp is not authenticated by TLS encryption solution.
-
Eclipseプロンプトを実行する java仮想マシンを使用しない
-
リソースの読み込みに失敗しました。サーバーはステータス500(内部サーバーエラー)で応答しました。
-
[オリジナル】java学習ノート【II】よくあるエラー クラスパス上のクラスファイルが見つからない、またはアクセスできない場合
-
Exception: java.util.NoSuchElementException: 行が見つかりません
-
Java(1)仕上げの基本概念+eclipseのインストール構成
-
テストが見つかりませんでした
-
[解決済み] mockito verify()でメソッドが2回呼び出されたことを確認する方法