使用 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()
進行引數匹配)。這可以使測試更清潔。