我在设置 Jest 以在我的一个项目中使用它时遇到了一些问题。当前项目通过 gulp 编译。设置测试库后,我在运行 npm run test
命令时收到“Jest 遇到意外令牌”错误。
这是我的包 json:
"name": "xxx",
"version": "1.0.0",
"description": "xxxx website",
"main": "main.js",
"scripts": {
"test": "jest",
"test:watch": "jest --watch",
"lint": "eslint --ignore-path .gitignore . --ext .js,.html",
"lint:fix": "npm run lint -- --fix"
},
"author": "Delirium",
"license": "ISC",
"dependencies": {
"@fortawesome/fontawesome-free": "^5.9.0",
"aos": "^2.3.4",
"jquery": "^3.4.1",
"jquery-modal": "^0.9.2",
"slick-carousel": "^1.8.1"
},
"devDependencies": {
"@babel/core": "^7.7.5",
"@babel/plugin-proposal-class-properties": "^7.13.0",
"autoprefixer": "^9.7.3",
"babel-eslint": "^10.1.0",
"babel-jest": "^27.0.2",
"babel-preset-env": "^1.7.0",
"babel-preset-jest": "^27.0.1",
"browser-sync": "^2.18.2",
"eslint": "^7.27.0",
"eslint-config-prettier": "^8.3.0",
"eslint-plugin-cypress": "^2.11.3",
"eslint-plugin-html": "^6.1.2",
"eslint-plugin-import": "^2.23.3",
"eslint-plugin-jest": "^24.3.6",
"eslint-plugin-prettier": "^3.4.0",
"eslint-plugin-simple-import-sort": "^7.0.0",
"gulp": "^3.9.1",
"gulp-babel": "^8.0.0",
"gulp-babel-minify": "^0.5.1",
"gulp-better-rollup": "^4.0.1",
"gulp-clean": "^0.3.2",
"gulp-clean-css": "^3.2.0",
"gulp-concat": "^2.6.1",
"gulp-plumber": "^1.1.0",
"gulp-postcss": "^6.3.0",
"gulp-rename": "^1.4.0",
"gulp-sass": "^4.0.2",
"gulp-sourcemaps": "^2.6.5",
"gulp-uglify": "^3.0.2",
"jest": "^27.0.4",
"prettier": "^2.3.0",
"rollup": "^2.49.0",
"rollup-plugin-babel": "^4.4.0",
"rollup-plugin-commonjs": "^10.1.0",
"rollup-plugin-node-resolve": "^5.2.0",
"run-sequence": "^1.2.2"
},
"browserslist": [
"> 1%",
"ie >= 8",
"edge >= 15",
"ie_mob >= 10",
"ff >= 45",
"chrome >= 45",
"safari >= 7",
"opera >= 23",
"ios >= 7",
"android >= 4",
"bb >= 10"
],
"jest": {
"verbose": true,
"transform": {
"\\.js$": "./custom-transformer-jest.js"
}
}
}
我一直在使用我在其他项目中使用的转换 javascript 文件,但恐怕我得到了相同的结果。该文件包含:
'use strict';
const {transform} = require('@babel/core');
const jestPreset = require('babel-preset-jest');
module.exports = {
process(src, filename) {
const result = transform(src, {
filename,
presets: [jestPreset],
});
return result || src;
},
};
问题是在运行我的测试时:
import { validateEmail } from '../js/includes/utils'
describe('Testing form email vaules', () => {
...
})
utils
文件中的 validateEmail 是:
export const validateEmail = (email) => {
const re = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
if (email != '' && re.test(email)) {
return true;
} else {
return false;
}
}
对不起,我不是 Jest 配置专家,但我无法设置一个新的干净的项目。有人能帮我理解这里的问题吗?
谢谢,
S.