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