我是Jest的新手,我正在尝试运行一个简单的单元测试,以确保所有内容都正确设置并且在编译期间遇到了很多问题 .
运行测试套件时,Jest成功找到我要测试的文件,并在第1行生成以下意外标识符错误消息 . 任何想法为什么会这样?缺少什么?我一直试图解决这个问题很长一段时间 .
/Users/foo/Sites/test/Test.spec.js:1
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,global,jest){import Test from './Test.vue';
^^^^
SyntaxError: Unexpected identifier
at ScriptTransformer._transformAndBuildScript (node_modules/jest-runtime/build/script_transformer.js:403:17)
注意,删除import语句一起成功运行测试 . 但是,我设置Jest的全部原因是测试vue组件 .
Test.vue
<template>
<div class="test">
</div>
</template>
<script>
export default {
name: 'test',
components: { },
data() {
return {
}
},
methods: {
helloWorld() {
return 'hello world';
}
}
}
</script>
Test.spec.js
import Test from './Test.vue'
describe('Test',() => {
it('test', () => {
expect(true).toBe(true);
});
});
的package.json
"devDependencies": {
"@vue/test-utils": "^1.0.0-beta.25",
"axios": "^0.18.0",
"babel-core": "^6.26.0",
"babel-jest": "^23.6.0",
"babel-loader": "^7.1.2",
"cross-env": "^5.1.1",
"file-loader": "^2.0.0",
"jest": "^23.6.0",
"jquery": "^3.2",
"laravel-mix": "^2.0",
"lodash": "^4.17.4",
"popper.js": "^1.14.3",
"source-map-support": "^0.5.9",
"vue": "^2.5.7",
"vue-jest": "^3.0.0",
"vue-test-utils": "^1.0.0-beta.11",
"webpack": "^3.8.1"
},
"jest": {
"moduleFileExtensions": [
"js",
"json",
"vue"
],
"transform": {
".*\\.(vue)$": "vue-jest",
"^.+\\.js$": "babel-jest"
}
}
1 回答
您正在测试中使用ES6功能,即import语句,因此您需要使用预设将它们编译为ES5 .
创建一个babel.config.js并添加@babel/preset-env,就像这样,
接下来,在jest设置下的package.json中,让jest知道测试代码的root所在的位置,以及将通过jest递归搜索的module directories,如下所示,