gpt4 book ai didi

reactjs - 如何在 Jest 配置中设置时区?

转载 作者:行者123 更新时间:2023-12-03 13:11:30 26 4
gpt4 key购买 nike

✗ npx jest --version
24.5.0

进行了一组对时区敏感的 Jest 测试。我们通常使用 npm 脚本运行它们:"jest": "TZ=utc jest"

将 TZ 设置为 utc 后,我在快照中得到如下值:

modificationDate="2019-01-08T00:00:00.000Z" 

没有它我得到:

modificationDate="2019-01-08T08:00:00.000Z"

有没有办法在我的 jest 配置中进行设置,以便我可以在命令行运行 npx jest 而无需通过 NPM 脚本? config docs关于这个。

我尝试将这两个添加到我的 jest.config.js 中。两者都不起作用:

  TZ: 'utc',

globals: {
TZ: 'utc',
},

当然,解决起来似乎很简单,但令我惊讶的是 Jest 没有办法为测试配置它。

最佳答案

这不适用于节点 16.2.0 之前的 Windows(以及节点 17 中 17.0.1 之前的版本) - 请参阅 https://github.com/nodejs/node/issues/4230

<小时/>

process.env.TZ = 'UTC'; 的问题是,如果在此行之前运行并使用Date,则该值将缓存在 日期。因此process.env一般不适合设置时区。请参阅https://github.com/nodejs/node/issues/3449

因此,更好的方法是使用实​​际的环境变量,但对于测试来说,这将起作用:

<强>1。将其添加到您的 package.json

  "jest": {
...
// depending on your paths it can also be './global-setup.js'
"globalSetup": "../global-setup.js"
}
}

<强>2。将此文件与 package.json 一起放置为 global-setup.js

module.exports = async () => {
process.env.TZ = 'UTC';
};

<强>3。可选:添加确保 UTC 执行的测试

describe('Timezones', () => {
it('should always be UTC', () => {
expect(new Date().getTimezoneOffset()).toBe(0);
});
});

正常的setupFiles对我来说不起作用,因为它们运行得太晚了(开 Jest :^23.5.0)。因此强制使用globalSetup 文件。

关于reactjs - 如何在 Jest 配置中设置时区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56261381/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com