リスト型の引数のメソッドのテストで、わたされた引数についてassertionしたいときのメモ。
@Captorアノテーションを使うのと、MockitoAnnotations#initMocksを使うのがみそ。
手順
- @Captorをつけて欲しいArgumentCaptorを定義
- @BeforeでinitMocks(this)をして、captorのインスタンス生成
- verifyでcaptor.capture()で渡された引数を指定
- captor.getValue()で渡された引数を取得
SampleTest.java
@Captor
ArgumentCaptor<List<Person>> captor;
@Before
public void before() {
MockitoAnnotations.initMocks(this);
}
@Test
public void test() {
PersonService service = ... ;
service.execute();
verify(service).update(captor.capture());
assertThat(captor.getValue()).isEmpty();
}
参考サイト