複数の静的メソッドを含むクラスを扱う場合、単一の静的メソッドをモックしながら確実にオブジェクトを返すという課題が発生します。オブジェクトを返します。 PowerMockito を使用した詳細なソリューションは次のとおりです。
静的モッキングを有効にする:
まず、PowerMockito を使用して、変更するクラスの静的モッキングを有効にします。モック静的(クラス.クラス)。これにより、そのクラス内の静的メソッドの特定の動作を設定できます。
メソッドのスタブ:
ターゲットの動作を指定するには静的メソッドの場合は、when-thenReturn 構文を使用します。例:
when(Class.m1(param1, param2)).thenReturn(objectToReturn);
これは、指定されたパラメーターで m1 が呼び出されたときに、指定されたオブジェクトを返す必要があることを指定します。
デフォルトの戻り値の回避:
デフォルトでは、PowerMockito は独自のデフォルト値を提供します。スタブ化されていない静的メソッド。これをオーバーライドしてカスタム オブジェクトを返すには、デフォルトの戦略を指定せずに、mockStatic の 1 引数バージョンを使用することが重要です。
実装例:
次のコード スニペットを考えてみましょう:
PowerMockito.mockStatic(Static.class); when(Static.m1("param1", "param2")).thenReturn(new Object());
これコードは、静的クラスの静的メソッド m1 をモックし、それをスタブして、オブジェクトの新しいインスタンスを返します。
モックされたメソッドの使用:
静的メソッドをモックしてスタブ化したら、通常どおり使用できます。メソッド呼び出しは PowerMockito によってインターセプトされ、指定されたオブジェクトを返します。
ここでの主な違いは、mockStatic の 1 引数バージョンを使用して、デフォルトの戦略を指定せずに静的モックを有効にすることです。次に、when-thenReturn 構文を使用して単一の静的メソッドをスタブし、オブジェクトを返します。
以上がPowerMockitoを使用してオブジェクトを返す単一の静的メソッドをモックする方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。