Mockito-モックオブジェクトメソッドによって返されたオブジェクトのメソッドをスタブする

gsingh2011:

モックオブジェクトがあり、そのメソッドをスタブ化したくないが、返されるオブジェクトのメソッドをスタブ化したいとしましょう。例えば、

when(mockObject.method1()).thenReturn(returnValue)

それが通常行われている方法ですが、私は探しています、

when(mockObject.method1().method2()).thenReturn(returnValue)

それは可能ですか?その場合、NullPointerExceptionが発生します。現在、私はモックオブジェクトを返す最初のメソッドをスタブし、次にその返されたモックオブジェクトを使用して、2番目のメソッドをスタブしています。ただし、これらの一時的なモックオブジェクトは私にとっては役に立たず、多くのメソッドを一緒にチェーンした後、多くの役に立たないモックオブジェクトが発生します。

編集:実際には、チェーンが機能する可能性がありますが、私のオブジェクトがNPEを引き起こしています。このコード(最初の行)がNPEを引き起こしています。

when(graphDb.index().getNodeAutoIndexer()).thenReturn(nodeAutoIndexer);
when(graphDb.index().getRelationshipAutoIndexer()).thenReturn(relAutoIndexer);

しかし、このコードは機能します:

IndexManager indexManager = mock(IndexManager.class);
when(graphDb.index()).thenReturn(indexManager);
when(indexManager.getNodeAutoIndexer()).thenReturn(nodeAutoIndexer);
when(graphDb.index().getRelationshipAutoIndexer()).thenReturn(relAutoIndexer);

そのため、RelationshipAutoIndexerを返すgetRelationshipAutoIndexer()に対して機能する一方で、AutoIndexerオブジェクトを返すgetNodeAutoIndexer()に対してチェーンは機能しませんでした。両方の戻り値は次のようにモックされます。

nodeAutoIndexer = (AutoIndexer<Node>) mock(AutoIndexer.class);
relAutoIndexer = mock(RelationshipAutoIndexer.class);

では、何が問題を引き起こしているのでしょうか?

JB Nizet:

全く問題ありません。

次の4行のコードを見てみましょう。

IndexManager indexManager = mock(IndexManager.class);
when(graphDb.index()).thenReturn(indexManager);
when(indexManager.getNodeAutoIndexer()).thenReturn(nodeAutoIndexer);
when(graphDb.index().getRelationshipAutoIndexer()).thenReturn(relAutoIndexer);

最初の行はモックindexManagerを作成します。

2番目は、indexメソッドが呼び出されたときにindexManager(最初の行で作成されたモック)を返すようにモックgraphDbに指示します。

3つ目は、モックのindexManager(最初の行で作成)に、getNodeAutoIndexerメソッドが呼び出されたときにnodeAutoIndexerを返すように指示しています。

そして、最後の行はgraphDb.index()を呼び出し、モックのindexManager(2行目でそれを行うように指示した)を返し、このindexManager(最初の行で作成したモック)に、getRelationshipAutoIndexerメソッドが呼び出されたときにrelAutoIndexerを返すように要求します。と呼ばれます。

最後の行が機能するのは、indexメソッドが呼び出されたときに何を返すかをモックgraphDbに指示したからです。これを以前に行っていない場合、モックのgraphDb.index()メソッドはnullを返し、NPEがあったはずです。

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

Mockito-メソッドに渡されたものと同じオブジェクトを返す

分類Dev

Mockito-メソッドが呼び出されるたびにモックオブジェクトを返します

分類Dev

powermockitoではなくmockitoでのみテスト中のメソッド内で作成されたオブジェクトをモックする方法は?

分類Dev

Mockitoはスパイされたオブジェクトメソッドの戻りを確認します

分類Dev

Mockito-オブジェクトのメソッド内の静的メソッドが呼び出されていることを確認します

分類Dev

Mockito-オブジェクトのメソッド内の静的メソッドが呼び出されていることを確認します

分類Dev

Spring BootとMockitoを使用したモックオブジェクトメソッドの呼び出し

分類Dev

Mockito:メソッド内で作成されたオブジェクトでメソッドが呼び出されたことを確認する方法は?

分類Dev

mockitoはspyメソッドでオブジェクトのシーケンスを返します

分類Dev

Mockitoは、モックされたオブジェクトのメソッド呼び出しの総数を検証できますか?

分類Dev

MockitoによってモックされたオブジェクトでGson TypeAdapterを使用する方法

分類Dev

Mockito-実際のオブジェクトをスパイして元のメソッドを呼び出す

分類Dev

Mockito:キャプチャされたオブジェクトのメソッドが呼び出されていることを確認します

分類Dev

Mockitoを使用してオブジェクトパラメータを使用してメソッドをモックします

分類Dev

Mockitoスタブメソッドのモックされていないメッセージを表示するAndroidユニットテスト

分類Dev

Mockitoでスパイされたオブジェクトの条件で実際のメソッドを呼び出す方法は?

分類Dev

Mockitoは、注入されたモックオブジェクトのメソッドに渡された引数をどのようにキャプチャできますか?

分類Dev

Mockitoスパイ-内部クラスメソッドを呼び出すとき、スパイオブジェクトのメソッドをスパイしない

分類Dev

Mockito-ターゲットクラスメソッド内の別のオブジェクトのメソッド呼び出しの検証

分類Dev

mockitoでモックされたオブジェクト名を取得する

分類Dev

mockitoによるモックオブジェクトメソッド呼び出しのコールバックを設定するにはどうすればよいですか?

分類Dev

Mockito-間接的なプライベートフィールドオブジェクトによって行われたメソッド呼び出しを検証する方法

分類Dev

Mockito-間接的なプライベートフィールドオブジェクトによって行われたメソッド呼び出しを検証する方法

分類Dev

Mockito-オブジェクトでメソッドが呼び出されたかどうかを確認します(オブジェクトがアクセスされました)

分類Dev

Mockitoモックオブジェクトがnullを返す

分類Dev

Mockitoでのメソッド呼び出しでのオブジェクトのインターセプト

分類Dev

mockitoを使用して注入されたオブジェクトの属性をモックする方法

分類Dev

Mockitoを使用して、voidメソッドでコールバックオブジェクトをインターセプトするにはどうすればよいですか?

分類Dev

Mockitoを使用してオブジェクト引数を持つメソッドをスパイすると、NullPointerExceptionが発生します

Related 関連記事

  1. 1

    Mockito-メソッドに渡されたものと同じオブジェクトを返す

  2. 2

    Mockito-メソッドが呼び出されるたびにモックオブジェクトを返します

  3. 3

    powermockitoではなくmockitoでのみテスト中のメソッド内で作成されたオブジェクトをモックする方法は?

  4. 4

    Mockitoはスパイされたオブジェクトメソッドの戻りを確認します

  5. 5

    Mockito-オブジェクトのメソッド内の静的メソッドが呼び出されていることを確認します

  6. 6

    Mockito-オブジェクトのメソッド内の静的メソッドが呼び出されていることを確認します

  7. 7

    Spring BootとMockitoを使用したモックオブジェクトメソッドの呼び出し

  8. 8

    Mockito:メソッド内で作成されたオブジェクトでメソッドが呼び出されたことを確認する方法は?

  9. 9

    mockitoはspyメソッドでオブジェクトのシーケンスを返します

  10. 10

    Mockitoは、モックされたオブジェクトのメソッド呼び出しの総数を検証できますか?

  11. 11

    MockitoによってモックされたオブジェクトでGson TypeAdapterを使用する方法

  12. 12

    Mockito-実際のオブジェクトをスパイして元のメソッドを呼び出す

  13. 13

    Mockito:キャプチャされたオブジェクトのメソッドが呼び出されていることを確認します

  14. 14

    Mockitoを使用してオブジェクトパラメータを使用してメソッドをモックします

  15. 15

    Mockitoスタブメソッドのモックされていないメッセージを表示するAndroidユニットテスト

  16. 16

    Mockitoでスパイされたオブジェクトの条件で実際のメソッドを呼び出す方法は?

  17. 17

    Mockitoは、注入されたモックオブジェクトのメソッドに渡された引数をどのようにキャプチャできますか?

  18. 18

    Mockitoスパイ-内部クラスメソッドを呼び出すとき、スパイオブジェクトのメソッドをスパイしない

  19. 19

    Mockito-ターゲットクラスメソッド内の別のオブジェクトのメソッド呼び出しの検証

  20. 20

    mockitoでモックされたオブジェクト名を取得する

  21. 21

    mockitoによるモックオブジェクトメソッド呼び出しのコールバックを設定するにはどうすればよいですか?

  22. 22

    Mockito-間接的なプライベートフィールドオブジェクトによって行われたメソッド呼び出しを検証する方法

  23. 23

    Mockito-間接的なプライベートフィールドオブジェクトによって行われたメソッド呼び出しを検証する方法

  24. 24

    Mockito-オブジェクトでメソッドが呼び出されたかどうかを確認します(オブジェクトがアクセスされました)

  25. 25

    Mockitoモックオブジェクトがnullを返す

  26. 26

    Mockitoでのメソッド呼び出しでのオブジェクトのインターセプト

  27. 27

    mockitoを使用して注入されたオブジェクトの属性をモックする方法

  28. 28

    Mockitoを使用して、voidメソッドでコールバックオブジェクトをインターセプトするにはどうすればよいですか?

  29. 29

    Mockitoを使用してオブジェクト引数を持つメソッドをスパイすると、NullPointerExceptionが発生します

ホットタグ

アーカイブ