我在使用 PowerMock时遇到了模拟ZoneDateTime
和(Java 8)的问题。LocalTime
我用
@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() 是一个好主意。测试不应影响源代码。