Mockito的论点Captor的例子
2022-08-31 06:22:13
任何人都可以给我一个例子,说明如何使用这个类,以及它与提供mojito的简单匹配器有何不同。org.mockito.ArgumentCaptor
我阅读了提供的嘲笑文件,但这些文件没有清楚地说明它,没有一个能够清楚地解释它。
任何人都可以给我一个例子,说明如何使用这个类,以及它与提供mojito的简单匹配器有何不同。org.mockito.ArgumentCaptor
我阅读了提供的嘲笑文件,但这些文件没有清楚地说明它,没有一个能够清楚地解释它。
我同意@fge说的话,更多了。让我们看一下示例。假设您有一种方法:
class A {
public void foo(OtherClass other) {
SomeData data = new SomeData("Some inner data");
other.doSomething(data);
}
}
现在,如果要检查内部数据,可以使用 captor:
// Create a mock of the OtherClass
OtherClass other = mock(OtherClass.class);
// Run the foo method with the mock
new A().foo(other);
// Capture the argument of the doSomething function
ArgumentCaptor<SomeData> captor = ArgumentCaptor.forClass(SomeData.class);
verify(other, times(1)).doSomething(captor.capture());
// Assert the argument
SomeData actual = captor.getValue();
assertEquals("Some inner data", actual.innerData);
两个主要区别是:
ArgumentCaptor
为了说明后者,假设您有:
final ArgumentCaptor<Foo> captor = ArgumentCaptor.forClass(Foo.class);
verify(x, times(4)).someMethod(captor.capture()); // for instance
然后,捕获器将能够让您访问所有4个参数,然后您可以单独执行断言。
实际上,这个或任何数量的参数,因为a不限于固定数量的调用;无论如何,如果您愿意,绑架者将为您提供访问所有这些内容的权限。VerificationMode
这还有一个好处,即这样的测试(恕我直言)比必须实现自己的测试更容易编写 - 特别是如果你将mojito与assertj相结合。ArgumentMatcher
哦,请考虑使用TestNG而不是JUnit。