Я использую загрузку компонентов ElementUI по требованию. Я правильно следовал инструкциям, и приложение работает нормально.
Проблема возникает, когда я пытаюсь протестировать с помощью тестовых утилит Jest и Vue. Ни один из компонентов, которые я импортирую, не найден, поэтому я получаю эту ошибку при запуске тестов:
ReferenceError: _Message is not defined
Я получаю ту же ошибку для любого другого компонента, который касается моего теста.
В отчете об ошибке, о котором я упоминал выше, мне предлагают, чтобы моя конфигурация babel не применялась в моей тестовой среде? Или это что-то о моей конфигурации Jest. Я пробовал разные вещи, чтобы исправить это:
- Делаем ручные моки
- Шпионить за компонентом
- Импорт всего пакета ElementUI в мой тест
- Обновление конфигурации Jest
Кажется, ничего не работает, и я понятия не имею, что не так...
bebel.config.js
module.exports = {
presets: [
'@vue/app',
],
plugins: [
[
'component',
{
libraryName: 'element-ui',
styleLibraryName: 'theme-chalk',
},
],
],
};
jest.config.js
module.exports = {
// roots: ['<rootDir>/src/', '<rootDir>/tests/'],
moduleFileExtensions: [
'js',
'jsx',
'json',
'vue',
],
transform: {
'^.+\\.vue$': 'vue-jest',
'.+\\.(css|styl|less|sass|scss|svg|png|jpg|ttf|woff|woff2)$': 'jest-transform-stub',
'^.+\\.jsx?$': 'babel-jest',
},
transformIgnorePatterns: [
'/node_modules/(?!element-ui)',
],
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'],
};