檢查傳遞給 mock 的引數

讓我們假設我們有這個類,我們想測試 doSmth 方法。在這種情況下,我們想看看引數 val 是否傳遞給 foo。物件 foo 被嘲笑。

public class Bar {

    private final Foo foo;

    public Bar(final Foo foo) {
        this.foo = foo;
    }

    public void doSmth() {
        foo.bla("val");
    }
}

我們可以用 ArgumentCaptor 實現這個目標:

@Mock
private Foo fooMock;

@InjectMocks
private Bar underTest;

@Captor
private ArgumentCaptor<String> stringCaptor;

@Test
public void should_test_smth() {
    underTest.doSmth();

    Mockito.verify(fooMock).bla(stringCaptor.capture());

    assertThat(stringCaptor.getValue(), is("val"));
}