[解決済み] Mockitoでvoidメソッドをモックする方法
2022-03-17 02:54:30
質問
void 型の戻り値を持つメソッドをモックするには?
observerパターンを実装したのですが、方法がわからず、Mockitoでモックできません。
そして、インターネットで例を探したのですが、うまくいきませんでした。
私のクラスはこのような感じです。
public class World {
List<Listener> listeners;
void addListener(Listener item) {
listeners.add(item);
}
void doAction(Action goal,Object obj) {
setState("i received");
goal.doAction(obj);
setState("i finished");
}
private string state;
//setter getter state
}
public class WorldTest implements Listener {
@Test public void word{
World w= mock(World.class);
w.addListener(this);
...
...
}
}
interface Listener {
void doAction();
}
モックでトリガーされない。
上記のようなシステムの状態を表示したい。また、それに応じたアサーションを行いたい。
どのように解決するのですか?
Mockitoを見てみましょう。
API ドキュメント
. リンク先のドキュメントで言及されているように(ポイント#12)、あなたはすべての
doThrow()
,
doAnswer()
,
doNothing()
,
doReturn()
Mockito フレームワークのメソッド群から、void メソッドをモックします。
例えば
Mockito.doThrow(new Exception()).when(instance).methodName();
またはフォローアップ動作と組み合わせたい場合。
Mockito.doThrow(new Exception()).doNothing().when(instance).methodName();
セッターのモッキングを考えていると仮定すると
setState(String s)
を使用するコードは以下のとおりです。
doAnswer
メソッドでモックを作成します。
setState
.
World mockWorld = mock(World.class);
doAnswer(new Answer<Void>() {
public Void answer(InvocationOnMock invocation) {
Object[] args = invocation.getArguments();
System.out.println("called with arguments: " + Arrays.toString(args));
return null;
}
}).when(mockWorld).setState(anyString());
関連
-
spring-boot 401 このリソースにアクセスするには完全な認証が必要です エラー解決
-
自動配線された依存性のインジェクションに失敗しました。
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] プライベートメソッド、フィールド、インナークラスを持つクラスをテストするにはどうすればよいですか?
-
[解決済み] モックとスタブの違いは何ですか?
-
[解決済み] Mockitoは複数回呼び出されたメソッドの引数をキャプチャできますか?
-
[解決済み] Mockitoを使用して、あるメソッドをモックし、他のメソッドをモックしない
-
[解決済み] voidメソッドが例外を投げるかどうかをMockitoがテストする
-
[解決済み] 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 実装 サイバーパンク風ボタン
おすすめ
-
スタイルが読み込まれず、ブラウザのコンソールでエラーが報告される。リソースはスタイルシートとして解釈されますが、MIMEタイプtext/htmlで転送されます。
-
スレッド "main "での例外をEclipseで解決 java.lang.Error: 未解決のコンパイル問題、コンパイラとパッケージの不整合
-
eclipse アクセス制限です。タイプ 'xxx' は API ではありません(必須ライブラリ '' の制限)。
-
スキャナは、タイプに解決することはできません最もルーキー初心者の質問
-
eclipseにプロジェクトをインポートした後、Editorにmain typeが含まれない問題
-
エラーの解決方法 jarfile XXX.jarにアクセスできません。
-
Eclipse起動エラー:javaは起動したが、終了コード=1を返した(ネット上の様々な落とし穴)
-
Error: java.lang.NoClassDefFoundError: クラス XXXX を初期化できませんでした
-
JSPで「リストが型解決できない!」の解決方法
-
ブラウザでの大容量ファイルスライスアップロード(Javaサーバサイド実装)