[解決済み] InjectMocksクラスのメソッドをモックするにはどうすればよいですか?
2023-05-26 14:43:45
質問
例えば、ハンドラを持っています。
@Component
public class MyHandler {
@AutoWired
private MyDependency myDependency;
public int someMethod() {
...
return anotherMethod();
}
public int anotherMethod() {...}
}
をテストするために、このように書きたいと思います。
@RunWith(MockitoJUnitRunner.class}
class MyHandlerTest {
@InjectMocks
private MyHandler myHandler;
@Mock
private MyDependency myDependency;
@Test
public void testSomeMethod() {
when(myHandler.anotherMethod()).thenReturn(1);
assertEquals(myHandler.someMethod() == 1);
}
}
しかし、これは実際には
anotherMethod()
を呼び出してしまいます。どうすればいいのでしょうか?
myHandler
をモック化するにはどうしたらいいでしょうか?
どのように解決するのですか?
まず最初に、MyHandler のメソッドをモック化する理由は次のようになります。
anotherMethod()
をテストしており、それは複雑なロジックを持っています。
someMethod()
の一部のような) テストをする必要があるのでしょうか?
verify
を呼び出しているのでしょうか?
スルーすればいいんです。
@RunWith(MockitoJUnitRunner.class)
class MyHandlerTest {
@Spy
@InjectMocks
private MyHandler myHandler;
@Mock
private MyDependency myDependency;
@Test
public void testSomeMethod() {
doReturn(1).when(myHandler).anotherMethod();
assertEquals(myHandler.someMethod() == 1);
verify(myHandler, times(1)).anotherMethod();
}
}
注意:'spying'オブジェクトの場合、'spying'オブジェクトは
doReturn
の代わりに
thenReturn
(に変更しました(ちょっとした説明は
である。
)
関連
-
Javaがテキストファイルを読み込む
-
ecplise プロンプトが表示されます。"選択したものは起動できません。" "最近の起動はありません。"
-
[解決済み] android.os.NetworkOnMainThreadException' を修正するにはどうすればよいですか?
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] プライベートメソッド、フィールド、インナークラスを持つクラスをテストするにはどうすればよいですか?
-
[解決済み] Mavenを使用して、依存関係を持つ実行可能なJARを作成するにはどうすればよいですか?
-
[解決済み] モックとスタブの違いは何ですか?
-
[解決済み] Mockitoでvoidメソッドをモックする方法
-
[解決済み] 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.lang.module.FindException: モジュールが見つかりません
-
Jsoup-Crawlingの動作
-
が 'X-Frame-Options' を 'sameorigin' に設定したため、フレーム内に存在する。
-
java -jarコマンドでパッケージを実行すると、無効または破損したjarfile xxxx.jarが表示される。
-
Java Notes 005_この行に複数のマーカーがある - キーを変数に解決できない - シンタックスエラー、ins
-
API の戻り値を処理するために ResponseEntity を使用する
-
eclipse 実行 Java、エラー: 選択を起動できず、レシーバーもありません。
-
git pull appears現在のブランチに対するトラッキング情報がありません。
-
htmlとwordの相互変換の実装(画像あり)
-
WeChat小プログラム Bluetooth通信 Bluetoothモジュールデモ