スタブにArgumentCaptorを使用するにはどうすればいいですか? 質問する

スタブにArgumentCaptorを使用するにはどうすればいいですか? 質問する

モッキートではドキュメンテーションそしてjavadocsそれは言う

ArgumentCaptor は検証では使用し、スタブでは使用しないことをお勧めします。

しかし、ArgumentCaptor をスタブにどのように使用できるのかわかりません。 上記の説明を説明して、ArgumentCaptor をスタブにどのように使用できるかを示したり、その方法を示すリンクを提供したりしてくれる人はいますか?

ベストアンサー1

次の方法をテストすると仮定します。

public boolean doSomething(SomeClass arg);

Mockitoのドキュメントには次のように書かれていますないcaptor を次のように使用します。

when(someObject.doSomething(argumentCaptor.capture())).thenReturn(true);
assertThat(argumentCaptor.getValue(), equalTo(expected));

スタブ中にマッチャーを使用できるため:

when(someObject.doSomething(eq(expected))).thenReturn(true);

しかし、検証は別の話です。テストでこのメソッドが特定の引数で呼び出されたことを確認する必要がある場合は、 を使用します。ArgumentCaptorこれは、そのように設計されているケースです。

ArgumentCaptor<SomeClass> argumentCaptor = ArgumentCaptor.forClass(SomeClass.class);
verify(someObject).doSomething(argumentCaptor.capture());
assertThat(argumentCaptor.getValue(), equalTo(expected));

おすすめ記事