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

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

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

Mock 时间

修改系统时间

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

对开发和测试都不够友好。

对开发来说，需要写大量的单元测试，不可能依赖这种方式来测试功能。

测试需要登陆测试环境不断设置时间。

集群模式下需要修改整个集群的时间，如果集群部署在一台机器上还好，但是我们使用 k8s ，只修改一个容器的时间，会导致整个集群出现问题，甚至挂掉。

修改应用的时间

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

单元测试非常好写。

并提供环境变量来注入，方便测试同学修改时间测试。

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