检查传递给 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"));
}