[解決済み] ArgumentCaptorを使用してスタブする方法は?
2022-05-04 20:43:54
質問
Mockitoの場合 ドキュメンテーション と ジャバドック と書いてあります。
<ブロッククオートArgumentCaptorは検証で使用することを推奨しますが、スタブでは使用しないことを推奨します。
しかし、ArgumentCaptorがどのようにスタビングに使用されるのかが理解できません。どなたか上記の文章を説明し、ArgumentCaptorがどのようにスタブに使用できるかを示すか、またはそれができる方法を示すリンクを提供していただけませんか?
どのように解決するのですか?
以下の方法を想定してテストしてください。
public boolean doSomething(SomeClass arg);
Mockitoのドキュメントでは、以下のように書かれています。 ではなく は、このようにキャプチャを使用します。
when(someObject.doSomething(argumentCaptor.capture())).thenReturn(true);
assertThat(argumentCaptor.getValue(), equalTo(expected));
なぜなら、スタブ時にマッチャーを使用すれば良いからです。
when(someObject.doSomething(eq(expected))).thenReturn(true);
しかし、検証は別の話です。もしあなたのテストが、このメソッドが特定の引数で呼ばれたことを確認する必要がある場合は
ArgumentCaptor
であり、このようなケースを想定して設計されています。
ArgumentCaptor<SomeClass> argumentCaptor = ArgumentCaptor.forClass(SomeClass.class);
verify(someObject).doSomething(argumentCaptor.capture());
assertThat(argumentCaptor.getValue(), equalTo(expected));
関連
-
プロジェクトの依存関係を解決できなかった 解決
-
maven プラグイン エラー プラグインの実行は、ライフサイクル構成ソリューションの対象外です。
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] なぜパスワードにはStringではなくchar[]が好まれるのですか?
-
[解決済み] JavaでArrayListではなくLinkedListを使用するのはいつですか?
-
[解決済み] serialVersionUIDとは何ですか、またなぜそれを使用する必要がありますか?
-
[解決済み] プライベートメソッド、フィールド、インナークラスを持つクラスをテストするにはどうすればよいですか?
-
[解決済み] JUnit 4のテストで、ある例外が投げられたことをどのように断言しますか?
-
[解決済み] Mockitoでvoidメソッドをモックする方法
-
[解決済み】Android UserManager.isUserAGoat()の正しい使用例?)
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
undefinedeclipse エラー。この行に複数のアノテーションが見つかりました: - 文字列を型解決に解決できない
-
myeclipseでコンパイルするとAntエラーが発生する javaの例外が発生しました。
-
JavaMailのメール送信が失敗するケースとその説明の分析
-
サーブレットクラスのインスタンス化エラーの解決法
-
エラーの解決方法 jarfile XXX.jarにアクセスできません。
-
マスキング このリソースにアクセスするには、完全な認証が必要です。
-
[オリジナル】java学習ノート【II】よくあるエラー クラスパス上のクラスファイルが見つからない、またはアクセスできない場合
-
テストが見つかりませんでした
-
ローカルリソースのロードが許可されていない場合の解決策
-
maven プラグイン エラー プラグインの実行は、ライフサイクル構成ソリューションの対象外です。