[解決済み] Mockitoでnew()呼び出しのあるクラスをテストする
2023-08-19 13:41:09
質問
レガシーなクラスがあり、そのクラスには
new()
のインスタンスを作成するための
LoginContext
オブジェクトのインスタンスを作成します。
public class TestedClass {
public LoginContext login(String user, String password) {
LoginContext lc = new LoginContext("login", callbackHandler);
}
}
このクラスをMockitoでモックしてテストしたいと思います。
LoginContext
をモックしたいのですが、JAAS セキュリティをインスタンス化する前に設定する必要があります。
login()
メソッドを外部化することなく
LoginContext
.
Mockito を使って
LoginContext
クラスをモックすることはできますか?
どのように解決するのですか?
今後のために、私は次のことをお勧めします。
Eran Harelの回答
(移動するリファクタリング
new
をモック化できるファクトリーに移動するリファクタリング)。しかし、元のソースコードを変更したくない場合は、非常に便利でユニークな機能を使用します。
スパイ
. から
ドキュメント
:
実物のスパイを作成することができます。スパイを使うときは 実 のメソッドが呼び出されます(メソッドがスタブされている場合を除く)。
本物のスパイを使うべき 慎重に、そして時折 例えば、レガシーコードを扱うときなどです。
あなたの場合、書くべきです。
TestedClass tc = spy(new TestedClass());
LoginContext lcMock = mock(LoginContext.class);
when(tc.login(anyString(), anyString())).thenReturn(lcMock);
関連
-
JDK8 の Optional.of と Optional.ofNullable メソッドの違いと使い方を説明する。
-
[解決済み] モッキート:InvalidUseOfMatchersException
-
[解決済み] プライベートメソッド、フィールド、インナークラスを持つクラスをテストするにはどうすればよいですか?
-
[解決済み] Java で、あるコンストラクタを別のコンストラクタから呼び出すにはどうすればよいですか?
-
[解決済み] Java内部クラスと静的ネストされたクラス
-
[解決済み] Mockitoでvoidメソッドをモックする方法
-
[解決済み] モッキート メソッドをスパイしようとすると、元のメソッドが呼び出される
-
[解決済み】Mockitoを使用して抽象クラスをテストする
-
[解決済み】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 実装 サイバーパンク風ボタン
おすすめ
-
アクセス制限です。タイプ 'JPEGCodec' は API ではない ☞My Blog Github ☜ ホームページを見る
-
executeQuery()でデータ操作文が発行できない。解決方法
-
型に解決できない エラー解決
-
ApplicationContextの起動エラーです。条件レポートを表示するには、アプリケーションを'de'で再実行します。
-
java マイクロソフト払い戻し予期せぬサーバーからのファイルの終了
-
BindException: アドレスはすでに使用中です:バインドエラー解決
-
セミコロン期待値エラー解決
-
Java appears タイプEを囲むインスタンスがアクセスできない。
-
1分でわかる!恋人の写真をIDEAの背景画像に設定する方法【おすすめ集
-
IDEAError:javaの依存性エラー。Annotation processing is not supported for module cycles...(アノテーション処理はモジュールサイクルではサポートされていません。