- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
✗ 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/
我是一名优秀的程序员,十分优秀!