yqb*_*qbk 10 javascript date mocking momentjs jestjs
我有 util 函数,它以特定日期格式解析给定日期(即“2019-01-28”),然后使用momentJS检索那天的开始并将其转换为 ISO 日期格式:
日期.js
import moment from 'moment'
export const getApiDateFormat = (date, dateFormat = getLocaleDateString()) =>
moment(date, dateFormat)
.startOf('day')
.toISOString()
Run Code Online (Sandbox Code Playgroud)
我想使用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,
)
})
Run Code Online (Sandbox Code Playgroud)
因为我目前位于Europe/Warsaw时区。如何使这个测试位置独立?
我尝试使用jest.mock来替换moment由getApiDateFormat使用moment.tz.setDefault("America/New_York"),但是,我所有的尝试都失败了,因为它们对moment由getApiDateFormat.
如何解决这样的问题并正确测试?
ilo*_*ett 23
使用环境TZ变量...
您可以添加到您的package.json所有机器都以相同的时区运行,如下所示:
"scripts": {
"test": "TZ=UTC jest",
"coverage": "TZ=UTC jest --coverage"
},
Run Code Online (Sandbox Code Playgroud)
小智 6
这对我有用
"scripts": {
"test": "TZ=UTC jest",
"coverage": "TZ=UTC jest --coverage"
}
Run Code Online (Sandbox Code Playgroud)
但请确保“时刻时区”:“^0.5.27”安装在您的 npm 依赖项中
| 归档时间: |
|
| 查看次数: |
6771 次 |
| 最近记录: |