小编yqb*_*qbk的帖子

在 Jest 测试中设置时刻时区

我有 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来替换momentgetApiDateFormat使用moment.tz.setDefault("America/New_York"),但是,我所有的尝试都失败了,因为它们对momentgetApiDateFormat.

如何解决这样的问题并正确测试?

javascript date mocking momentjs jestjs

10
推荐指数
2
解决办法
6771
查看次数

使用匹配计算带有 Javascript 的字符串中单词的出现次数

我正在尝试使用该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)

我怎样才能修复它以获得正确的结果?

javascript regex

1
推荐指数
1
解决办法
6730
查看次数

标签 统计

javascript ×2

date ×1

jestjs ×1

mocking ×1

momentjs ×1

regex ×1