【发布时间】:2019-05-23 11:43:46
【问题描述】:
我有 util 函数以特定日期格式解析给定日期(即“2019-01-28”),然后使用 momentJS 检索当天的开始并将其转换为 ISO 日期格式:
dates.js
import moment from 'moment'
export const getApiDateFormat = (date, dateFormat = getLocaleDateString()) =>
moment(date, dateFormat)
.startOf('day')
.toISOString()
我想使用Jest 测试此功能,并为moment 设置特定时区,以便独立于我的位置使用这些测试。
目前,我有:
dates.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 将getApiDateFormat 使用的moment 替换为moment.tz.setDefault("America/New_York"),但是,我的所有尝试都失败了,因为它们对getApiDateFormat 导入的moment 库没有影响。
如何解决这样的问题并正确测试?
【问题讨论】:
-
如果有人需要解决这个问题,我可以推荐 timezone-mock lib - npmjs.com/package/timezone-mock。
标签: javascript date mocking jestjs momentjs