假设我们有下面的类,我想测试一下:
class Times {
Clock cl = Clock.systemDefaultZone();
public int changeTime() {
LocalDate ld = LocalDate.now(cl);
if(ld.getMonth().equals(Month.OCTOBER))
return 1;
if(ld.getMonth().equals(Month.NOVEMBER))
return 2;
return 0;
}
}如何强制将日期定在11月,并断言该方法返回2?
我正在使用JUnit和Mockito。
发布于 2015-10-25 16:49:57
假设Clock对象在Times类中有一个setter,您可以这样做:
Times times = new Times();
Clock fixedClockInNovember = Clock.fixed(Instant.parse("2015-11-01T00:00:00.00Z"), ZoneId.of("UTC"));
times.setClock(fixedClockInNovember);
assertEquals(2, times.changeTime());在此代码中,将创建一个固定时钟。这将模拟给定时刻的恒定时间,即11月份。
因此,对LocalDate.now(clock)的任何调用都将在11月返回相同的日期。
https://stackoverflow.com/questions/33331788
复制相似问题