首页 > 解决方案 > 如何用玩笑为所有单元测试设置SystemTime

问题描述

我正在使用 ReactJS 构建一个客户端应用程序,并且我正在使用 Jest 来帮助对我的应用程序进行单元测试。

    "jest": "^26.6.3",
    "@types/jest": "^26.0.15",
    "@types/react": "^16.8.24",

在我当前的测试套件中,我们在所有地方和我们的模拟数据文件中都使用 new Date() 例如

testMockData.ts

const testObject = {
   start: new Date(new Date().setMinutes(new Date().getMinutes() + 120)),
   end: new Date(new Date().setMinutes(new Date().getMinutes() + 140))
};

我发现测试是不稳定的,因为我们的 CI 构建与本地构建的时区差异。测试数据用于所有测试服。

如何为我的所有测试设置 jest.setSystemTime() 而不是像本例中那样逐个文件?开玩笑 setSystemTime 不适用于全局范围

此外,我如何确保测试数据在我的个人测试之外占用系统时间?

标签: reactjstypescriptunit-testingjestjs

解决方案


推荐阅读