使用自定义 EasyMock Matcher 进行松散的日期比较。这是一个示例,它将检查日期是否在彼此的一秒内。
public class MyEasyMockMatchers {
public static Date withinSecondOf(Date value){
EasyMock.reportMatcher(new IArgumentMatcher() {
@Override
public boolean matches(Object argument) {
return argument instanceof Date
&& Math.abs(((Date) argument).getTime() - value.getTime()) < Timer.ONE_SECOND;
}
@Override
public void appendTo(StringBuffer buffer) {
buffer.append(value.toString());
}
});
return null;
}
}
然后在您的测试中使用:
import static my.package.MyEasyMockMatchers.*;
...
expect(testedClass.testedMethod(withinSecondOf(new Date())))
.andReturn(false);
请注意,当您使用一个匹配器时,您必须对整个期望使用匹配器。例如:
expect(testedClass.testedMethod(42, "hello", new Date()))
.andReturn(false);
// becomes
expect(testedClass.testedMethod(eq(42), eq("hello"), withinSecondOf(new Date())))
.andReturn(false);
请参阅:https ://easymock.org/user-guide.html#verification-expectations