为Jest测试设置`Date.prototype.toLocaleString`的语言环境

时间:2018-10-03 01:38:52

标签: javascript jestjs

我们在世界各地都有前端工程师,因此当我们运行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);
  };

1 个答案:

答案 0 :(得分:1)

您应该下载完整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",
 },

如果您使用的是Jest VSCode扩展名,则必须更改此配置:

`"jest.pathToJest": "npm run test --"`