javascript - 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"
那么为什么它开玩笑地失败了呢?
解决方案
正如@James 在他们的评论中提到的,这仅在 Node V13.0.0 和更高版本中受支持,如此处所述:https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/ toLocaleString#Browser_compatibility
一个简单的测试方法是从命令行运行它。输入node
并复制粘贴您的方法,然后使用时间戳调用该方法。
这是一个例子:
推荐阅读
- java - 我应该将哪个版本的 OpenJFX (JavaFX) 和 Scene Builder 与 Amazon Corretto 11 (OpenJDK) 一起使用?
- python - 在 3d 条形图中将刻度和基本形状之间的空间从正方形更改为矩形
- reactjs - 如何在反应表中使用复选框?
- javascript - 如何将我的数组转换为对象或 json webscraping
- c# - ASP.NET Core MVC 从 cshtml 页面调用异步方法
- mono - 在 Linux 中加载 Mono 库时如何处理未定义的符号
- dynamics-crm - 如何在不引用特定实体的情况下调用 Dynamics Web api 绑定的自定义操作?
- kotlin - 为什么 Gradle 会报告意外的 Kotlin 版本?
- c++ - 类成员变量的隐式默认值?
- python - 如何“平滑”3D 条形图?