ArgumentCaptor を検証と共に使用することをお勧めしますが、スタブでは使用しないことをお勧めします。
しかし、ArgumentCaptor をスタブに使用する方法がわかりません。誰かが上記のステートメントを説明し、ArgumentCaptor をスタブに使用する方法を示したり、その方法を示すリンクを提供したりできますか?
次のテスト方法を想定しています。
public boolean doSomething(SomeClass arg);
Mockito のドキュメントには、この方法でキャプターを使用しないでくださいと記載されています。
when(someObject.doSomething(argumentCaptor.capture())).thenReturn(true);
assertThat(argumentCaptor.getValue(), equalTo(expected));
スタブ中にマッチャーを使用できるため:
when(someObject.doSomething(eq(expected))).thenReturn(true);
しかし、検証は別の話です。テストで、このメソッドが特定の引数で呼び出されたことを確認する必要ArgumentCaptor
がある場合は、 and を使用して設計されています。
ArgumentCaptor<SomeClass> argumentCaptor = ArgumentCaptor.forClass(SomeClass.class);
verify(someObject).doSomething(argumentCaptor.capture());
assertThat(argumentCaptor.getValue(), equalTo(expected));