Giả sử phương pháp sau để kiểm tra:
public boolean doSomething(SomeClass arg);
Tài liệu Mockito nói rằng bạn không nên sử dụng captor theo cách này:
when(someObject.doSomething(argumentCaptor.capture())).thenReturn(true);
assertThat(argumentCaptor.getValue(), equalTo(expected));
Bởi vì bạn chỉ có thể sử dụng diêm trong quá trình khai thác:
when(someObject.doSomething(eq(expected))).thenReturn(true);
Nhưng xác minh là một câu chuyện khác nhau. Nếu thử nghiệm của bạn cần đảm bảo rằng phương thức này được gọi với một đối số cụ thể, hãy sử dụng ArgumentCaptor
và đây là trường hợp được thiết kế:
ArgumentCaptor<SomeClass> argumentCaptor = ArgumentCaptor.forClass(SomeClass.class);
verify(someObject).doSomething(argumentCaptor.capture());
assertThat(argumentCaptor.getValue(), equalTo(expected));