Vue.js ElementUI测试抛出引用错误:\未定义消息
我使用按需加载ElementUI组件。我正确地遵循了说明,在运行应用程序时,它运行得很好 当我尝试使用Jest和Vue测试utils进行测试时,问题就出现了。似乎找不到我导入的任何组件,因此在运行测试时出现以下错误:Vue.js ElementUI测试抛出引用错误:\未定义消息,vue.js,jestjs,vue-test-utils,element-ui,Vue.js,Jestjs,Vue Test Utils,Element Ui,我使用按需加载ElementUI组件。我正确地遵循了说明,在运行应用程序时,它运行得很好 当我尝试使用Jest和Vue测试utils进行测试时,问题就出现了。似乎找不到我导入的任何组件,因此在运行测试时出现以下错误: ReferenceError: _Message is not defined 对于我的测试涉及的任何其他组件,我都会得到相同的错误 在我上面提到的bug报告中,有人建议我的babel配置没有应用到我的测试环境中?或者是关于我的笑话配置。我尝试了各种方法来解决这个问题: 进行手动
ReferenceError: _Message is not defined
对于我的测试涉及的任何其他组件,我都会得到相同的错误
在我上面提到的bug报告中,有人建议我的babel配置没有应用到我的测试环境中?或者是关于我的笑话配置。我尝试了各种方法来解决这个问题:
进行手动模拟
监视组件
在我的测试中导入整个ElementUI包
更新Jest配置
似乎什么都不管用,我也不知道怎么了
bebel.config.js
module.exports={
预设:[
“@vue/app”,
],
插件:[
[
“组件”,
{
libraryName:“元素ui”,
styleLibraryName:'主题粉笔',
},
],
],
};
jest.config.js
module.exports={
//根:['/src/','/tests/'],
moduleFileExtensions:[
"js",,
“jsx”,
“json”,
“vue”,
],
转换:{
“^.+\\.vue$”:“vue jest”,
“.+\.css | styl | less | sass | scss | svg | png | jpg | ttf | woff | woff2$”:“jest transform stub”,
“^.+\\.jsx?$”:“巴贝尔笑话”,
},
转换信号模式:[
“/node_modules/?!element ui”,
],
模块映射:{
“^@/*$”:“/src/$1”,
“^.+\.css | styl | less | sass | scss | png | jpg | ttf | woff | woff2$”:“jest transform stub”,
},
快照序列化程序:[
“jest serializer vue”,
],
测试匹配:[
“**/tests/**.spec.js | jsx | ts | tsx |**/u测试|/**.js | jsx | ts | tsx”,
],
testURL:'http://localhost/',
监视插件:[
“jest watch typeahead/filename”,
“jest watch typeahead/testname”,
],
报道:是的,
覆盖率报告:['lcov','text summary'],
};
这里我有几点建议: 在jest.config.js中更改此选项
module.exports = {
moduleFileExtensions: [
'js',
'jsx',
'json',
'vue',
],
transform: {
'^.+\\.vue$': 'vue-jest',
'.+\\.(css|styl|less|sass|scss|svg|png|jpg|ttf|woff|woff2)$': 'jest-transform-stub',
'^.+\\.(js|jsx)?$': 'babel-jest'
},
moduleNameMapper: {
'^@/(.*)$': '<rootDir>/src/$1',
'^.+\\.(css|styl|less|sass|scss|png|jpg|ttf|woff|woff2)$': 'jest-transform-stub',
},
snapshotSerializers: [
'jest-serializer-vue',
],
testMatch: [
'**/tests/**/*.spec.(js|jsx|ts|tsx)|**/__tests__/*.(js|jsx|ts|tsx)',
],
testURL: 'http://localhost/',
watchPlugins: [
'jest-watch-typeahead/filename',
'jest-watch-typeahead/testname',
],
collectCoverage: true,
coverageReporters: ['lcov', 'text-summary'],
};
module.exports = {
presets: [
'@vue/app',
],
plugins: [
[
'component',
{
libraryName: 'element-ui',
styleLibraryName: 'theme-chalk',
},
],
],
"env": { "test": { "plugins": ["transform-es2015-modules-commonjs", "dynamic-import-node"] } }
};
此外,我相信@babel/plugin转换模块commonjs在纱线中是必需的。
让我知道这是否有效