Я работаю над проектом, который со временем вырос, поэтому мы преобразовали код vue. js в заводские методы для упрощения модульного тестирования. С первым файлом все было просто, никаких проблем, но теперь у меня проблемы с запуском jest test для второго заводского файла.
Я получаю следующую ошибку:
FAIL src/tests/unit/projectsDataFactory.test.js
● Test suite failed to run
C:\Work\WSL\frontend\envidat_frontend\node_modules\@babel\runtime-corejs2\helpers\esm\typeof.js:1
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,global,jest){import _Symbol$iterator from "../../core-js/symbol/iterator";
^^^^^^^^^^^^^^^^
SyntaxError: Unexpected identifier
15 | export function enhanceSubprojectsFromExtras(projects) {
16 |
> 17 | for (let i = 0; i < projects.length; i++) {
| ^
18 | const el = projects[i];
19 |
20 | if (typeof el.extras === 'object' && el.extras instanceof Array) {
at ScriptTransformer._transformAndBuildScript (node_modules/@jest/transform/build/ScriptTransformer.js:537:17)
at ScriptTransformer.transform (node_modules/@jest/transform/build/ScriptTransformer.js:579:25)
at Object.<anonymous> (src/factories/projectsDataFactory.js:17:39)
Файл projectDataFactor экспортируется следующим образом:
export function enhanceSubprojectsFromExtras(projects) {
for (let i = 0; i < projects.length; i++) {
...
}
}
projectsDataFactory.test. js выглядит так:
const projectsDataFactory = require('../../factories/projectsDataFactory');
const packagelist = require('../../testdata/packagelist');
const projectJSON = require('../../testdata/projects');
it('projectsDataFactory - enhanceSubprojectsFromExtras - empty', () => {
const enhanced = projectsDataFactory.enhanceSubprojectsFromExtras(undefined);
expect(enhanced).toBeDefined();
expect(enhanced.length).toEqual(0);
});
Я немного растерян, в чем проблема Может быть, версия Babel, кажется, работает для другого, но не для этого конкретного? Я пытался добавить разные плагины babel, но безуспешно.
** Как мне заставить babel правильно перенести файл для запуска теста? **
Здесь зависимости в пакете. json:
{
"scripts": {
"serve": "vue-cli-service serve",
"build": "vue-cli-service build",
"lint": "vue-cli-service lint",
"test": "jest"
},
"dependencies": {
"axios": "^0.19.0",
"babel-loader": "^8.0.6",
"babel-polyfill": "^6.26.0",
"core-js": "^2.6.5",
"eslint-import-resolver-webpack": "^0.11.1",
"eslint-plugin-import": "^2.18.2",
"vue": "^2.6.10",
"vue-jest": "^3.0.5",
"vue-router": "^3.0.3",
"vuex": "^3.0.1",
"vuex-localstorage": "^1.0.0"
},
"devDependencies": {
"@babel/core": "^7.7.4",
"@babel/plugin-syntax-dynamic-import": "^7.7.4",
"@babel/plugin-transform-flow-comments": "^7.7.4",
"@babel/polyfill": "^7.7.0",
"@babel/preset-env": "^7.7.4",
"@babel/register": "^7.7.7",
"@vue/cli-plugin-babel": "^3.11.0",
"@vue/cli-plugin-eslint": "^3.11.0",
"@vue/cli-service": "^3.11.0",
"@vue/eslint-config-airbnb": "^4.0.1",
"babel-eslint": "^10.0.1",
"babel-jest": "^24.9.0",
"babel-plugin-require-context-hook": "^1.0.0",
"babel-plugin-transform-es2015-modules-commonjs": "^6.26.2",
"css-loader": "^3.1.0",
"eslint": "^5.16.0",
"eslint-import-resolver-babel-module": "^5.1.0",
"eslint-plugin-vue": "^5.0.0",
"html-webpack-plugin": "^3.2.0",
"jest": "^24.9.0",
"node-sass": "^4.12.0",
"postcss-import": "^12.0.1",
"postcss-loader": "^3.0.0",
"postcss-url": "^8.0.0",
"sass-loader": "^7.1.0",
"style-loader": "^0.23.1",
"stylus": "^0.54.5",
"stylus-loader": "^3.0.2",
"vue-cli-plugin-storybook": "^0.6.1",
"vue-cli-plugin-vuetify": "^0.5.0",
"vue-template-compiler": "^2.6.10",
"vuetify-loader": "^1.0.5",
"webpack": "^4.39.3"
},
"jest": {
"moduleNameMapper": {
"^vue$": "vue/dist/vue.common.js"
},
"moduleFileExtensions": [
"js",
"vue",
"json"
],
"transform": {
"^.+\\.js$": "<rootDir>/node_modules/babel-jest",
".*\\.(vue)$": "<rootDir>/node_modules/vue-jest"
}
},
"browserslist": [
"> 1%",
"last 2 versions"
]
}
jest.config. js просто содержит:
module.exports = {
testEnvironment: 'node',
verbose: true,
};
Btw. Я исследовал topi c и, таким образом, попробовал различные плагины babel, в конце концов, у меня только что были синтаксические ошибки в разных местах заводского файла.