java - 如何模拟当前日期?

标签 java unit-testing date mockito powermockito

我的代码中有一个方法可以验证当天是营业时间。它会检查数据库日历。

方法如下:

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

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

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

您认为这个问题需要什么才能使用 powerMockito 来模拟 LocalDate.now()

最佳答案

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

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

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

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

关于java - 如何模拟当前日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35774492/

相关文章:

java - SSL套接字帮助-javax.net.ssl.SSLHandshakeException : Received fatal alert: certificate_unknown

c# - 测试友好的架构

Java 单元测试

c - 队列数据结构实现

javascript - 根据一天中的时间更改图像

javascript - 判断字符串是日期还是数字

java - JAVA中特定时间以特定时间间隔运行的线程

Java jdbc 超时

java - 在 java 中,为什么自定义异常也应该有一个参数为 'Throwable cause' 的构造函数

python - 在 Python 中模拟自定义异常