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

✗ npx jest --version

24.5.0

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

将TZ设置为utc时,我可以在快照中获得如下所示的值:

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

没有它,我得到:

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

配置文档中没有关于此的任何内容。

我尝试将这两个添加到我的jest.config.js中。没有人起作用:

  TZ: 'utc',

globals: {

TZ: 'utc',

},

当然,解决这个问题似乎微不足道,但是令我惊讶的是,Jest没有办法配置它进行测试。

回答:

-请参阅

https://github.com/nodejs/node/issues/4230


问题process.env.TZ =

'UTC';在于,如果某行在此行之前运行并使用Date,则该值将被缓存在中Date。因此process.env通常不适合设置时区。参见

https://github.com/nodejs/node/issues/3449

因此,更好的方法是使用实​​际的env变量,但是对于测试而言,它将起作用:

  "jest": {

...

// depending on your paths it can also be './global-setup.js'

"globalSetup": "../global-setup.js"

}

}

作为global-setup.js

module.exports = async () => {

process.env.TZ = 'UTC';

};

describe('Timezones', () => {

it('should always be UTC', () => {

expect(new Date().getTimezoneOffset()).toBe(0);

});

});

正常setupFiles并 对我来说,因为它们运行太晚了(开玩笑:^ 23.5.0)。因此,

使用globalSetup文件。

以上是 如何在Jest配置中设置时区? 的全部内容, 来源链接: utcz.com/qa/402805.html

回到顶部