如何模拟当前日期?

时间:2016-03-03 14:11:31

标签: java unit-testing date mockito powermockito

我的代码中有一个方法可以验证当前是否有业务。它会检查数据库日历。

方法如下所示:

public boolean iBusinessDayToday() {
      LocalDate today = LocalDate.now();
      //logic with today
}

我需要为此编写单元测试。

我希望单位测试不依赖于工作日。

您认为使用powerMockito模拟LocalDate.now()需要此问题是什么?

1 个答案:

答案 0 :(得分:6)

另一种方法是将时钟传递给方法:

public boolean iBusinessDayToday() {
  return iBusinessDayToday(Clock.systemDefaultZone());
}

@VisibleForTesting
boolean iBusinessDayToday(Clock clock) {
      LocalDate today = LocalDate.now(clock);
      //logic with today
}

现在你可以测试第二种方法并传递a fixed clock - 不需要使用模拟框架。