使用 ArgumentMatcher 验证参数
Mockito 提供了一个 Matcher<T>
接口以及一个抽象的 ArgumentMatcher<T>
类来验证参数。它使用与 ArgumentCaptor
相同的用例的不同方法。此外,ArgumentMatcher 也可用于模拟。这两个用例都使用 Mockito.argThat()
方法,该方法提供了一个合理可读的测试代码。
verify(someMock).someMethod(Mockito.argThat(new ArgumentMatcher<String>() {
@Override
public boolean matches(Object o) {
return o instanceof String && !((String)o).isEmpty();
}
});
从 ArgumentMatcher 的 JavaDocs:
警告: 使用复杂的参数匹配是合理的,尤其是自定义参数匹配器,因为它可以使测试的可读性降低。有时最好为传递给模拟的参数实现 equals()
(Mockito 自然地使用 equals()
进行参数匹配)。这可以使测试更清洁。