ホームページ >Java >&#&チュートリアル >ここでは、質問の側面と中心的な問題/解決策に焦点を当てた、いくつかのタイトルのオプションを示します。 オプション 1 (直接): * Mockito Spies を使用して `new()` で初期化されたオブジェクトをモックする方法 オプション 2 (問題
Mockito を使用した new() 演算子呼び出しによるクラスのテスト
new() 演算子を使用してインスタンスを初期化するクラスのモック化は、特に難しい場合があります。レガシーコードを扱うとき。そのような例の 1 つは、LoginContext オブジェクトをインスタンス化する TestedClass クラスの login() メソッドです。
Mockito を使用してこのクラスをテストしようとすると、インスタンス化の前に JAAS セキュリティ設定が必要になるため、問題が発生します。外部から LoginContext を呼び出さない限り、オブジェクトをモックすることは不可能のようです。
解決策: Mockito Spies の利用
この障害を克服するために、Mockito はスパイという独自の機能を提供しています。現実の物体にスパイを作成することができます。スパイはスパイされたオブジェクトの実際のメソッドを呼び出しますが、必要に応じて特定のメソッドをモックアウトしたりアサートしたりすることもできます。
TestedClass の場合、解決策は次のとおりです。
<code class="java">TestedClass tc = spy(new TestedClass()); LoginContext lcMock = mock(LoginContext.class); when(tc.login(anyString(), anyString())).thenReturn(lcMock);</code>
ここでは、TestedClass にスパイを作成し、実際のメソッドと対話し、期待する動作をアサートできるようにします。 login() メソッドをモックすることで、戻り値を制御し、それに渡されたパラメーターを検証できます。
以上がここでは、質問の側面と中心的な問題/解決策に焦点を当てた、いくつかのタイトルのオプションを示します。 オプション 1 (直接): * Mockito Spies を使用して `new()` で初期化されたオブジェクトをモックする方法 オプション 2 (問題の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。