使用 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')
}
}
我正在实施 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')
}
}