使用 Jest 测试时未定义全局节点配置变量

Global node-config variable undefined when testing with Jest

我正在实施 node-config docs 中的选项 2。

这 运行 很好,我的全局配置变量是在 运行 在测试环境之外定义的。

然而,当我 运行 使用 vue-cli 和 Jest 单元测试(例如 vue-cli-service test:unit)时,我得到这个错误:

  ● Test suite failed to run

    ReferenceError: APP_CONFIG is not defined
// vue.config.js
...
 configureWebpack: {
    plugins: [
      new ConfigWebpackPlugin('APP_CONFIG')
    ]
  },
...

解决这个问题的好方法是什么?是因为 Jest 在 node-config 可以完成切换所有全局变量及其值之前开始执行 JS 文件吗?

Jest 没有 运行 Webpack,因此您必须手动设置测试配置。作为解决方法,您可以将配置声明为 Jest global.

要声明全局,请将 globals 属性 添加到 jest.config.js 中的导出对象。 sub-property 键是 config-webpack 的命名空间(在您的例子中是 APP_CONFIG),值是 config/ 中所需的配置 JSON 文件:

// jest.config.js
module.exports = {
  globals: {
    APP_CONFIG: require('./config/default.json')
  }
}