我在使用PowerMock模拟ZoneDateTime
和LocalTime
(Java 8)时遇到了问题。
我用
@RunWith(PowerMockRunner.class)
@PrepareForTest({ZonedDateTime.class, LocalTime.class, Util.class})
用于类和测试方法
mockStatic(ZonedDateTime.class, LocalTime.class, Util.class);
PowerMockito
.doReturn(LocalTime.parse("23:56"))
.when(LocalTime.class, "now");
PowerMockito
.doReturn(ZonedDateTime.parse("2017-08-28T23:56:00Z", DateTimeFormatter.ISO_OFFSET_DATE_TIME))
.when(ZonedDateTime.class, "now", ZoneId.of(AMERICA_CHICAGO_ZONE));
PowerMockito
.doReturn("bombel")
.when(Util.class, "test");
不幸的是,前两个案例并不是模拟静态方法。 第三个,"测试"由我写的是嘲笑。
如何模拟ZonedDateTime
和LocalTime
?
我必须确定"现在"特别是在某个时刻。我不认为用另一种方法包装ZoneDatetime.now()是个好主意。测试不应对源代码产生影响。