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

时间:2019-07-17 22:47:36

标签: vue.js webpack vuejs2 jestjs node-config

我正在实施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文件吗?

1 个答案:

答案 0 :(得分:1)

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

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

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