使用 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;