Vue.js ElementUI测试抛出引用错误:\未定义消息

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配置没有应用到我的测试环境中?或者是关于我的笑话配置。我尝试了各种方法来解决这个问题: 进行手动

我使用按需加载ElementUI组件。我正确地遵循了说明,在运行应用程序时,它运行得很好

当我尝试使用Jest和Vue测试utils进行测试时,问题就出现了。似乎找不到我导入的任何组件,因此在运行测试时出现以下错误:

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在纱线中是必需的。 让我知道这是否有效