Javaで連鎖呼び出しをモックするための最良のソリューション

トミ

私は次のコードを持っています:

handler = NodeHandler.getINodeHandler(localZone).getITspPlatformHandler().getITspProcessorManagementHandler();

私はこれを次のようにモックアウトしました:

mockStatic(NodeHandler.class);
INodeHandler iNodeHandler = mock(INodeHandler.class,Mockito.RETURNS_DEEP_STUBS);
when(NodeHandler.getINodeHandler(localZone)).thenReturn(iNodeHandler);
ITspProcessorManagementHandler iTspProcessorManagementHandler =mock(ITspProcessorManagementHandler.class,Mockito.RETURNS_DEEP_STUBS);
when(iNodeHandler.getITspPlatformHandler().getITspProcessorManagementHandler()).thenReturn(iTspProcessorManagementHandler);

数行のコードの後、別の連鎖メソッド呼び出しが行われます。

ITspTrafficProcessor processor = NodeHandler.getINodeHandler(localZone, localUI).getITspPlatformHandler().getITspProcessorManagementHandler()
                .getITspProcessorHandler(procs[i]).getITspTrafficProcessorHandler(0).getAttributes();

そして、私はこれをこのようにモックアウトしました:

when(NodeHandler.getINodeHandler(localZone,UI.CORBA)).thenReturn(iNodeHandler);
when(iNodeHandler.getITspPlatformHandler().getITspProcessorManagementHandler()(+1+).getITspProcessorHandler(anyString())
            .getITspTrafficProcessorHandler(anyInt()).getAttributes()).thenReturn(null);

だから私の質問は、これよりも良い解決策を見つけることができないということです。問題は、mockitoにiTspProcessorManagementHandlerではなくハンドラーにnullを返すように指示すると、(+ 1 +)でnullpointer例外が発生するためですが、コードに次の変更を加えます。

INodeHandler iNodeHandler = mock(INodeHandler.class,Mockito.RETURNS_MOCKS);

mockitoはすべてのメソッド呼び出しをモックアウトし、when-thenReturnステートメントは必要なもの(たとえばnull)を返しません。それで、より良い解決策を行うためのアドバイスはありますか????

NilsH

そのような乱雑なモックは、抽象化を改善できることを示しています。その特定のロジックをヘルパーインターフェイス/クラスにカプセル化するか、「trainwreck」によって返される期待される型をメソッド/クラスに注入することを検討します。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

単一のユーティリティ メソッドでクラスのさまざまなメソッドを呼び出すためにリフレクションを使用する最良の方法

分類Dev

メソッド呼び出しを連鎖させるためにメソッドが「self」を返すようにするのは良いことですか?

分類Dev

Webオーディオのロックを解除するための最良のソリューション

分類Dev

HaxeFlixelでアセットをエンコードするための最良のソリューション

分類Dev

HaxeFlixelでアセットをエンコードするための最良のソリューション

分類Dev

実行時にアプリケーションにヒットするAPI呼び出しを単体テストするための最良の方法

分類Dev

バックボーンのオプションビューで選択したモデルを取得するための最良の方法

分類Dev

モバイル版をクリックするための最適なソリューション

分類Dev

GoogleマップをJavaデスクトップアプリケーションに統合するための良いソリューションですか?

分類Dev

java.util.ListをScalaリストに変換するための最良のソリューション

分類Dev

ノード内のJestで連鎖関数呼び出しを使用するノードモジュールのモック

分類Dev

MERN StackのようなWebおよびAPIソリューションを認証および承認するための最良の方法は何ですか?

分類Dev

React JS Ajax呼び出しの読み込みアニメーションを作成するための最良の方法は何ですか?

分類Dev

Java-引数クラスによって実行時に呼び出し可能なメソッドを選択するための最良のオプション

分類Dev

Elasticsearchで設定を変更するための最良のソリューション

分類Dev

複数のユーザーが貢献して変更をリアルタイムで確認できるシングルページアプリを作成するための最良のスタック/ソリューション

分類Dev

述語を比較するための連鎖java.util.function.Predicate呼び出し

分類Dev

通貨フォーマットを使用した変数の追加とリストを検索するための最良のソリューション

分類Dev

反応フェッチを使用する必要がある場合、反応WebアプリケーションでAPI呼び出しを行うための最良の方法はどれですか、または他の最良のツールがありますか

分類Dev

PHPバックエンドで複数のAPIから提供するための最良のソリューションは何ですか?

分類Dev

Angular-.finally()は、連鎖されたPromiseデシジョンツリーのすべてのパスの最後で呼び出されますか?

分類Dev

DSCプッシュモード-DSCリソースをコピーするための最良の方法

分類Dev

WAN経由でNASにバックアップするための最良のソリューションアドバイス

分類Dev

typescript以外のnpmモジュールをインポートするための最良のソリューション

分類Dev

Apache CamelルートとBeanクラスを「ホットデプロイ」するための最良のソリューションは?

分類Dev

構造体リフレクションのためのポインターレシーバーでElem()メソッドを呼び出す必要性

分類Dev

リフレクションによってゲッターを呼び出す最良の方法

分類Dev

連鎖呼び出しのモックまたはスタブ

分類Dev

Javaの静的メソッド呼び出しで静的抽象リンクと動的リンクをシミュレートする

Related 関連記事

  1. 1

    単一のユーティリティ メソッドでクラスのさまざまなメソッドを呼び出すためにリフレクションを使用する最良の方法

  2. 2

    メソッド呼び出しを連鎖させるためにメソッドが「self」を返すようにするのは良いことですか?

  3. 3

    Webオーディオのロックを解除するための最良のソリューション

  4. 4

    HaxeFlixelでアセットをエンコードするための最良のソリューション

  5. 5

    HaxeFlixelでアセットをエンコードするための最良のソリューション

  6. 6

    実行時にアプリケーションにヒットするAPI呼び出しを単体テストするための最良の方法

  7. 7

    バックボーンのオプションビューで選択したモデルを取得するための最良の方法

  8. 8

    モバイル版をクリックするための最適なソリューション

  9. 9

    GoogleマップをJavaデスクトップアプリケーションに統合するための良いソリューションですか?

  10. 10

    java.util.ListをScalaリストに変換するための最良のソリューション

  11. 11

    ノード内のJestで連鎖関数呼び出しを使用するノードモジュールのモック

  12. 12

    MERN StackのようなWebおよびAPIソリューションを認証および承認するための最良の方法は何ですか?

  13. 13

    React JS Ajax呼び出しの読み込みアニメーションを作成するための最良の方法は何ですか?

  14. 14

    Java-引数クラスによって実行時に呼び出し可能なメソッドを選択するための最良のオプション

  15. 15

    Elasticsearchで設定を変更するための最良のソリューション

  16. 16

    複数のユーザーが貢献して変更をリアルタイムで確認できるシングルページアプリを作成するための最良のスタック/ソリューション

  17. 17

    述語を比較するための連鎖java.util.function.Predicate呼び出し

  18. 18

    通貨フォーマットを使用した変数の追加とリストを検索するための最良のソリューション

  19. 19

    反応フェッチを使用する必要がある場合、反応WebアプリケーションでAPI呼び出しを行うための最良の方法はどれですか、または他の最良のツールがありますか

  20. 20

    PHPバックエンドで複数のAPIから提供するための最良のソリューションは何ですか?

  21. 21

    Angular-.finally()は、連鎖されたPromiseデシジョンツリーのすべてのパスの最後で呼び出されますか?

  22. 22

    DSCプッシュモード-DSCリソースをコピーするための最良の方法

  23. 23

    WAN経由でNASにバックアップするための最良のソリューションアドバイス

  24. 24

    typescript以外のnpmモジュールをインポートするための最良のソリューション

  25. 25

    Apache CamelルートとBeanクラスを「ホットデプロイ」するための最良のソリューションは?

  26. 26

    構造体リフレクションのためのポインターレシーバーでElem()メソッドを呼び出す必要性

  27. 27

    リフレクションによってゲッターを呼び出す最良の方法

  28. 28

    連鎖呼び出しのモックまたはスタブ

  29. 29

    Javaの静的メソッド呼び出しで静的抽象リンクと動的リンクをシミュレートする

ホットタグ

アーカイブ