在的Mockito 文档和javadoc文档 ,它说
建议使用ArgumentCaptor与验证,但不与存根。
但我不明白ArgumentCaptor如何被用于磕碰。 有人可以解释上述说法,并表示ArgumentCaptor如何被用于磕碰或提供一个链接,显示它是如何做呢?
在的Mockito 文档和javadoc文档 ,它说
建议使用ArgumentCaptor与验证,但不与存根。
但我不明白ArgumentCaptor如何被用于磕碰。 有人可以解释上述说法,并表示ArgumentCaptor如何被用于磕碰或提供一个链接,显示它是如何做呢?
假设下面的方法进行测试:
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));