如何解决如何使用PowerMockito模拟Java日历
我想模拟以下方法,以使用powermockito返回true。
private boolean isResetPswrdLinkExpired(Timestamp timestamp) {
Calendar then = Calendar.getInstance();
then.setTime(timestamp);
then.getTime();
Calendar now = Calendar.getInstance();
Long diff = now.getTimeInMillis() - then.getTimeInMillis();
if (diff < 24 * 60 * 60 * 1000) {
return false;
} else {
return true;
}
}
解决方法
请勿使用Calendar
,而应使用java.time
(总是,不仅限于此;请参见该方法的可读性)。使用java.time
,您可以使用Clock
进行测试。
class PasswordManager
@Setter
private Clock clock = Clock.systemUTC();
private boolean isExpired(Instant timestamp) {
return timestamp.plus(1,DAYS).isBefore(Instant.now(clock));
}
然后在您的测试用例中,
passwordManager.setClock(Clock.fixed(...));
(注意:也请避免使用if(...) { return true } else { return false}
或反之。相反,请按照我的指示进行操作,然后直接return !(diff < ...)
。)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。