我们在世界各地都有前端工程师,因此当我们运行时Date.prototype.toLocaleString,我们会得到不同的结果。有时,这些差异会在Jest测试中显示出来。如果其他国家/地区的某人进行Jest测试,则可能会由于导致测试失败toLocaleString。有什么方法可以强制Jest使用特定的语言环境?
作为创可贴的解决方案,我在失败的测试中添加了以下内容:
const toLocaleString = Date.prototype.toLocaleString;
// eslint-disable-next-line no-extend-native
Date.prototype.toLocaleString = function(locale = 'en-US', ...args) {
return toLocaleString.call(this, locale, ...args);
};
Run Code Online (Sandbox Code Playgroud)
fab*_*omf 10
您应该下载完整的 icu 节点包:
npm i full-icu --save
并像这样运行你的测试:
NODE_ICU_DATA=node_modules/full-icu jest
因此,如果您运行 npm 脚本,您的 package.json 将如下所示:
"scripts": {
"dev": "...",
"test": "NODE_ICU_DATA=node_modules/full-icu jest",
},
Run Code Online (Sandbox Code Playgroud)
如果使用 React 脚本:
"scripts": {
"dev": "...",
"test": "NODE_ICU_DATA=node_modules/full-icu react-scripts test",
},
Run Code Online (Sandbox Code Playgroud)
如果您使用的是 Jest VSCode 扩展,则必须更改此配置:
`"jest.pathToJest": "npm run test --"`
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1025 次 |
| 最近记录: |