有这样的界面:
interface Foo {
void method(String s);
}
Run Code Online (Sandbox Code Playgroud)
一个想法是使用正则表达式匹配:
final Foo mock = mock(Foo.class);
mock.method("abc");
verify(mock).method(matches(".{3}"));
Run Code Online (Sandbox Code Playgroud)
不幸的是,字符串长度没有内置的匹配器(应该有!),但是编写自定义的很容易:
private static String hasSize(final int size) {
return argThat(new ArgumentMatcher<String>() {
@Override
public boolean matches(Object argument) {
return argument.toString().length() == size;
}
});
}
Run Code Online (Sandbox Code Playgroud)
现在只需调用静态方法:
verify(mock).method(hasSize(4));
Run Code Online (Sandbox Code Playgroud)