如何测试对当前时间有强依赖的应用
之前做过的系统中,有些功能对当前时间有非常强的依赖。比如:任务系统中,每日刷新,每周刷新,每月刷新之类的。
整个迭代周期很短,留个开发和测试的时间都不多,真实的时间肯定要测试,但大量的测试还是需要依赖一个假的时间。
Mock 时间 #
修改系统时间 #
修改系统时间虽然比较简单,但会带来一些问题。
- 对开发和测试都不够友好。
- 对开发来说,需要写大量的单元测试,不可能依赖这种方式来测试功能。
- 测试需要登陆测试环境不断设置时间。
- 集群模式下需要修改整个集群的时间,如果集群部署在一台机器上还好,但是我们使用 k8s ,只修改一个容器的时间,会导致整个集群出现问题,甚至挂掉。
修改应用的时间 #
这个对开发和测试比较友好。
- 单元测试非常好写。
- 并提供环境变量来注入,方便测试同学修改时间测试。
Node.js 中,在应用启动的时候,把 Date 时间库包装一下就可以解决。当然社区中也有现成的包 timeshift-js 解决。
- Previous: 如何快速升级 JavaScript 项目中的所有依赖到最新版本
- Next: 使用 chezmoi 来做 dotfiles 管理