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

Steve Perkins:

私は内部でSpring AMQP接続オブジェクトを使用するサービスクラスをテストしようとしています。この接続オブジェクトはSpringによって注入されます。ただし、ユニットテストでAMQPブローカーと実際に通信したくないので、Mockitoを使用して接続オブジェクトのモックを挿入しています。

/** 
 * The real service class being tested.  Has an injected dependency. 
 */ 
public class UserService {

   @Autowired
   private AmqpTemplate amqpTemplate;

   public final String doSomething(final String inputString) {
      final String requestId = UUID.randomUUID().toString();
      final Message message = ...;
      amqpTemplate.send(requestId, message);
      return requestId;
   }
}

/** 
 * Unit test 
 */
public class UserServiceTest {

   /** This is the class whose real code I want to test */
   @InjectMocks
   private UserService userService;

   /** This is a dependency of the real class, that I wish to override with a mock */
   @Mock
   private AmqpTemplate amqpTemplateMock;

   @Before
   public void initMocks() {
      MockitoAnnotations.initMocks(this);
   }

   @Test
   public void testDoSomething() {
      doNothing().when(amqpTemplateMock).send(anyString(), any(Message.class));

      // Call the real service class method, which internally will make 
      // use of the mock (I've verified that this works right).
      userService.doSomething(...);

      // Okay, now I need to verify that UUID string returned by 
      // "userService.doSomething(...) matches the argument that method 
      // internally passed to "amqpTemplateMock.send(...)".  Up here 
      // at the unit test level, how can I capture the arguments passed 
      // to that inject mock for comparison?
      //
      // Since the value being compared is a UUID string created 
      // internally within "userService", I cannot just verify against 
      // a fixed expected value.  The UUID will by definition always be
      // unique.
   }
}

このコードサンプルのコメントで、質問が明確に示されることを期待しています。Mockitoがモックの依存関係を実際のクラスに挿入し、実際のクラスでユニットテストを実行してモックを呼び出した場合、注入されたモックに渡された正確な引数を後で取得するにはどうすればよいですか?

fge:

1つ以上ArgumentCaptorのsを使用します。

あなたのタイプがここにあるかは不明ですが、とにかく。引数としてdoSomething()a Fooとるメソッド持つモックがあるとしましょう。そうすると、次のようになります。

final ArgumentCaptor<Foo> captor = ArgumentCaptor.forClass(Foo.class);

verify(mock).doSomething(captor.capture());

final Foo argument = captor.getValue();

// Test the argument

また、メソッドはvoidを返し、何も実行したくないようです。これを書いてください:

doNothing().when(theMock).doSomething(any());

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

Javaハンドラオブジェクトはどのようにしてキャッチされた例外とキャッチされなかった例外をすべてキャッチできますか?

分類Dev

Mockitoは、複数回呼び出されたメソッドの引数をキャプチャできますか?

分類Dev

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

分類Dev

Mockitoモックオブジェクトに渡された引数に対してクエリを実行することはできますか?

分類Dev

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

分類Dev

事前に定義されたメモリプールオブジェクトを使用してスレッドをコアに固定するにはどうすればよいですか?(80コアNehalemアーキテクチャ2Tb RAM)

分類Dev

メソッドに渡されたStringオブジェクトの値を変更できますか?

分類Dev

ネストされたリストをマトリックスのようなオブジェクトまたは表のようなオブジェクトにキャストするにはどうすればよいですか?

分類Dev

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

分類Dev

Javaでは、オブジェクトのプリミティブを含まないフィールドを、オブジェクトハンドルとして渡されたメソッドに渡しますか?そうであれば、その可変性にどのように影響しますか?

分類Dev

Javaでは、オブジェクトのプリミティブを含まないフィールドを、オブジェクトハンドルとして渡されたメソッドに渡しますか?そうであれば、その可変性にどのように影響しますか?

分類Dev

モックが呼び出されたときに、モックアウトされたメソッドに渡されたインスタンス/オブジェクトをモックが無視するのはなぜですか?

分類Dev

C#ジェネリックスパラメーターとしてオブジェクト型を持たないジェネリックメソッドの引数として渡された型を取得するにはどうすればよいですか?

分類Dev

actionPerformedで呼び出されたメソッドにオブジェクト引数を渡す方法は?

分類Dev

actionPerformedで呼び出されたメソッドにオブジェクト引数を渡す方法は?

分類Dev

Javascriptでこのオブジェクトのメソッドを宣言するときに、オブジェクトに設定されたメソッドを正しく参照するにはどうすればよいですか?

分類Dev

モックされた関数に渡された引数をキャプチャして返す方法は?

分類Dev

Rでは、ジェネリックメソッドが実装されているシグネチャをどのように確認できますか?

分類Dev

1つのプロパティがContainsメソッドに渡されたオブジェクトと等しいオブジェクトがコレクションに含まれているかどうかをきちんとチェックする方法は?

分類Dev

javascriptオブジェクトメソッドは、まだ宣言されていない変数をどのように参照できますか?

分類Dev

キャプチャされた引数にアクセスする方法/ Pythonインスタンスメソッドオブジェクトのクロージャ?

分類Dev

チャネルを使用するためだけに調整されたPhoenixアプリケーションは、複数のマシンでどのように拡張できますか?HAProxyを使用していますか?すべてのノードにメッセージをブロードキャストする方法は?

分類Dev

Ember Dataはキャッシュされたオブジェクトのセキュリティをどのように処理しますか?

分類Dev

Fridaのフックされた関数に引数として渡されたJavaオブジェクトのメソッドを呼び出す

分類Dev

インスタンスで呼び出された「bind」メソッドに渡された事前定義された関数内からオブジェクトインスタンスのコンテキストにアクセスするにはどうすればよいですか?

分類Dev

mockitoを使用する; ラムダをパラメーターとして受け取り、ラムダによってキャプチャされた変数をアサートするメソッドをモックすることは可能ですか?

分類Dev

mockitoを使用する; ラムダをパラメーターとして受け取り、ラムダによってキャプチャされた変数をアサートするメソッドをモックすることは可能ですか?

分類Dev

キャッシュされたjQueryオブジェクトをバックボーンの複数のビューで使用できるようにする

分類Dev

ウェブサイトのさまざまなページにアクセスしているときにチャットポップアップを開いたままにするにはどうすればよいですか?

Related 関連記事

  1. 1

    Javaハンドラオブジェクトはどのようにしてキャッチされた例外とキャッチされなかった例外をすべてキャッチできますか?

  2. 2

    Mockitoは、複数回呼び出されたメソッドの引数をキャプチャできますか?

  3. 3

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

  4. 4

    Mockitoモックオブジェクトに渡された引数に対してクエリを実行することはできますか?

  5. 5

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

  6. 6

    事前に定義されたメモリプールオブジェクトを使用してスレッドをコアに固定するにはどうすればよいですか?(80コアNehalemアーキテクチャ2Tb RAM)

  7. 7

    メソッドに渡されたStringオブジェクトの値を変更できますか?

  8. 8

    ネストされたリストをマトリックスのようなオブジェクトまたは表のようなオブジェクトにキャストするにはどうすればよいですか?

  9. 9

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

  10. 10

    Javaでは、オブジェクトのプリミティブを含まないフィールドを、オブジェクトハンドルとして渡されたメソッドに渡しますか?そうであれば、その可変性にどのように影響しますか?

  11. 11

    Javaでは、オブジェクトのプリミティブを含まないフィールドを、オブジェクトハンドルとして渡されたメソッドに渡しますか?そうであれば、その可変性にどのように影響しますか?

  12. 12

    モックが呼び出されたときに、モックアウトされたメソッドに渡されたインスタンス/オブジェクトをモックが無視するのはなぜですか?

  13. 13

    C#ジェネリックスパラメーターとしてオブジェクト型を持たないジェネリックメソッドの引数として渡された型を取得するにはどうすればよいですか?

  14. 14

    actionPerformedで呼び出されたメソッドにオブジェクト引数を渡す方法は?

  15. 15

    actionPerformedで呼び出されたメソッドにオブジェクト引数を渡す方法は?

  16. 16

    Javascriptでこのオブジェクトのメソッドを宣言するときに、オブジェクトに設定されたメソッドを正しく参照するにはどうすればよいですか?

  17. 17

    モックされた関数に渡された引数をキャプチャして返す方法は?

  18. 18

    Rでは、ジェネリックメソッドが実装されているシグネチャをどのように確認できますか?

  19. 19

    1つのプロパティがContainsメソッドに渡されたオブジェクトと等しいオブジェクトがコレクションに含まれているかどうかをきちんとチェックする方法は?

  20. 20

    javascriptオブジェクトメソッドは、まだ宣言されていない変数をどのように参照できますか?

  21. 21

    キャプチャされた引数にアクセスする方法/ Pythonインスタンスメソッドオブジェクトのクロージャ?

  22. 22

    チャネルを使用するためだけに調整されたPhoenixアプリケーションは、複数のマシンでどのように拡張できますか?HAProxyを使用していますか?すべてのノードにメッセージをブロードキャストする方法は?

  23. 23

    Ember Dataはキャッシュされたオブジェクトのセキュリティをどのように処理しますか?

  24. 24

    Fridaのフックされた関数に引数として渡されたJavaオブジェクトのメソッドを呼び出す

  25. 25

    インスタンスで呼び出された「bind」メソッドに渡された事前定義された関数内からオブジェクトインスタンスのコンテキストにアクセスするにはどうすればよいですか?

  26. 26

    mockitoを使用する; ラムダをパラメーターとして受け取り、ラムダによってキャプチャされた変数をアサートするメソッドをモックすることは可能ですか?

  27. 27

    mockitoを使用する; ラムダをパラメーターとして受け取り、ラムダによってキャプチャされた変数をアサートするメソッドをモックすることは可能ですか?

  28. 28

    キャッシュされたjQueryオブジェクトをバックボーンの複数のビューで使用できるようにする

  29. 29

    ウェブサイトのさまざまなページにアクセスしているときにチャットポップアップを開いたままにするにはどうすればよいですか?

ホットタグ

アーカイブ