如何使用powermockito模拟java日历

n9vozmp4  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(482)

我想通过使用powermockito模拟以下方法以返回true。

  1. private boolean isResetPswrdLinkExpired(Timestamp timestamp) {
  2. Calendar then = Calendar.getInstance();
  3. then.setTime(timestamp);
  4. then.getTime();
  5. Calendar now = Calendar.getInstance();
  6. Long diff = now.getTimeInMillis() - then.getTimeInMillis();
  7. if (diff < 24 * 60 * 60 * 1000) {
  8. return false;
  9. } else {
  10. return true;
  11. }
  12. }
368yc8dk

368yc8dk1#

不要使用 Calendar ,使用 java.time 相反(总是,不只是为了这个;查看该方法的可读性)。与 java.time ,您可以使用 Clock 用于测试。

  1. class PasswordManager
  2. @Setter
  3. private Clock clock = Clock.systemUTC();
  4. private boolean isExpired(Instant timestamp) {
  5. return timestamp.plus(1, DAYS).isBefore(Instant.now(clock));
  6. }

在你的测试中,

  1. passwordManager.setClock(Clock.fixed(...));

(注意:也要避免 if(...) { return true } else { return false} 或者相反。相反,照我说的做 return !(diff < ...) 直接。)

相关问题