我有一个 util 函数,它以特定日期格式解析给定日期(即“2019-01-28”),然后使用 momentJS
检索当天的开始并将其转换为 ISO 日期格式:
日期.js
import moment from 'moment'
export const getApiDateFormat = (date, dateFormat = getLocaleDateString()) =>
moment(date, dateFormat)
.startOf('day')
.toISOString()
我想用
Jest
测试这个功能并为 moment
设置特定时区使用这些测试独立于我的位置。目前,我有:
日期.test.js
const formattedDate = '2019-01-27T23:00:00.000Z'
test('date in russian format - 28.01.2019', () => {
const russianDateFormat = 'DD.MM.YYYY'
expect(getApiDateFormat('28.01.2019', russianDateFormat)).toEqual(
formattedDate,
)
})
因为我目前位于
Europe/Warsaw
时区。如何使这个测试位置独立?我尝试使用
jest.mock
替换moment
由 getApiDateFormat
使用通过 moment.tz.setDefault("America/New_York")
,但是,我所有的尝试都失败了,因为它们对 moment
没有影响。由 getApiDateFormat
导入的库.如何解决这样的问题并正确测试?
最佳答案
使用TZ
环境变量...
您可以添加到您的 package.json
所以所有机器都使用相同的时区运行,如下所示:
"scripts": {
"test": "TZ=UTC jest",
"coverage": "TZ=UTC jest --coverage"
},
关于javascript - 在 Jest 测试中设置时刻时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56274496/