使用 ArgumentCaptor 验证调用参数

ArgumentCaptor 将接收已传递给方法的实际调用参数。

ArgumentCaptor<Foo> captor = ArgumentCaptor.forClass(Foo.class);
verify(mockObj).doSomethind(captor.capture());
Foo invocationArg = captor.getValue();
//do any assertions on invocationArg

对于多次调用 mocked 方法来接收所有调用参数的情况

List<Foo> invocationArgs = captor.getAllValues();

相同的方法用于捕获 varargs。

还有可能使用 @Captor 注释创建 ArgumentCaptor

@Captor
private ArgumentCaptor<Foo> captor;