首页 > 解决方案 > date.toLocaleString('en-us', { dateStyle: 'long' }) 不在开玩笑测试中工作,但在浏览器中工作

问题描述

我不知道为什么这个功能没有通过测试,

export function timeStampToFormattedDate (timestamp) {
  if (!timestamp) return 'N/A'
  const date = new Date(timestamp)
  return date.toLocaleString('en-us', { dateStyle: 'long' })
}

测试

describe('timeStampToFormattedDate function', () => {
  it('returns formatted date string from last active user time-stamp', () => {
    const timeStamp = 1592810798024
    const formattedString = timeStampToFormattedDate(timeStamp)
    expect(formattedString).toEqual(`June 22, 2020`)
  })
})

运行测试时出现此错误,

timeStampToFormattedDate function › returns formatted date string from last active user time-stamp

expect(received).toEqual(expected) // deep equality

Expected: "June 22, 2020"
Received: "6/22/2020, 10:26:38 AM"

   8 |     const timeStamp = 1592810798024
   9 |     const formattedString = timeStampToFormattedDate(timeStamp)
> 10 |     expect(formattedString).toEqual(`June 22, 2020`)
     |                             ^
  11 |   })
  12 |
  13 |   it('returns "N/A" if last active timestamp is null', () => {

  at Object.toEqual (src/utilities/dateTimeUtil.test.js:10:29)

当我通过使用与浏览器控制台中的测试相同的参数调用该函数来尝试该函数时,它按预期工作。

timeStampToFormattedDate(1592810798024)
"June 22, 2020"

那么为什么它开玩笑地失败了呢?

标签: javascriptreactjsjestjs

解决方案


正如@James 在他们的评论中提到的,这仅在 Node V13.0.0 和更高版本中受支持,如此处所述:https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/ toLocaleString#Browser_compatibility

一个简单的测试方法是从命令行运行它。输入node并复制粘贴您的方法,然后使用时间戳调用该方法。

这是一个例子:

在此处输入图像描述


推荐阅读