如何使用ArgumentCaptor的磕碰?(How to use ArgumentCaptor f

2019-06-18 01:10发布

在的Mockito 文档和javadoc文档 ,它说

建议使用ArgumentCaptor与验证,但不与存根。

但我不明白ArgumentCaptor如何被用于磕碰。 有人可以解释上述说法,并表示ArgumentCaptor如何被用于磕碰或提供一个链接,显示它是如何做呢?

Answer 1:

假设下面的方法进行测试:

public boolean doSomething(SomeClass arg);

文档的Mockito说,你应该以这种方式使用的捕手:

when(someObject.doSomething(argumentCaptor.capture())).thenReturn(true);
assertThat(argumentCaptor.getValue(), equalTo(expected));

因为你可以在磕碰只使用匹配:

when(someObject.doSomething(eq(expected))).thenReturn(true);

但验证是一个不同的故事。 如果您的测试需要确保这种方法被称为与特定的参数,使用ArgumentCaptor ,这是其设计的情况下:

ArgumentCaptor<SomeClass> argumentCaptor = ArgumentCaptor.forClass(SomeClass.class);
verify(someObject).doSomething(argumentCaptor.capture());
assertThat(argumentCaptor.getValue(), equalTo(expected));


文章来源: How to use ArgumentCaptor for stubbing?