ホームページ  >  記事  >  Java  >  ここでは、質問の側面と中心的な問題/解決策に焦点を当てた、いくつかのタイトルのオプションを示します。 オプション 1 (直接): * Mockito Spies を使用して `new()` で初期化されたオブジェクトをモックする方法 オプション 2 (問題

ここでは、質問の側面と中心的な問題/解決策に焦点を当てた、いくつかのタイトルのオプションを示します。 オプション 1 (直接): * Mockito Spies を使用して `new()` で初期化されたオブジェクトをモックする方法 オプション 2 (問題

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-27 11:11:30281ブラウズ

Here are a few title options, focusing on the question aspect and the core problem/solution:

Option 1 (Direct): 
* How to Mock Objects Initialized with `new()` Using Mockito Spies? 

Option 2 (Problem-Focused):
* Mockito Mocking Challenge: Testing Classe

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。