我有 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.
如何解决这样的问题并正确测试?
我正在尝试使用该match方法计算较长文本中每个单词的出现次数,但不是result我只得到一个错误:
无法读取 null 的属性“长度”
我的函数如下所示:
const myText = "cat dog stop rain cat"
myText.split(" ").forEach((word) => {
const numberOfOccurrences = myText.match(/word/g).length
console.log(`${word} - ${numberOfOccurrences}`)
})Run Code Online (Sandbox Code Playgroud)
我怎样才能修复它以获得正确的结果?