Skip to main content
Jkyo Chen Blog

如何测试对当前时间有强依赖的应用

之前做过的系统中,有些功能对当前时间有非常强的依赖。比如:任务系统中,每日刷新,每周刷新,每月刷新之类的。

整个迭代周期很短,留个开发和测试的时间都不多,真实的时间肯定要测试,但大量的测试还是需要依赖一个假的时间。

Mock 时间 #

修改系统时间 #

修改系统时间虽然比较简单,但会带来一些问题。

  1. 对开发和测试都不够友好。
    1. 对开发来说,需要写大量的单元测试,不可能依赖这种方式来测试功能。
    2. 测试需要登陆测试环境不断设置时间。
  2. 集群模式下需要修改整个集群的时间,如果集群部署在一台机器上还好,但是我们使用 k8s ,只修改一个容器的时间,会导致整个集群出现问题,甚至挂掉。

修改应用的时间 #

这个对开发和测试比较友好。

  1. 单元测试非常好写。
  2. 并提供环境变量来注入,方便测试同学修改时间测试。

Node.js 中,在应用启动的时候,把 Date 时间库包装一下就可以解决。当然社区中也有现成的包 timeshift-js 解决。