首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >单元测试Vue组件- Jest安装程序-意外标识符错误

问单元测试Vue组件- Jest安装程序-意外标识符错误
EN

Stack Overflow用户
提问于 2018-10-15 06:22:30
回答 1查看 2.3K关注 0票数 15

我是Jest的新手,我正在尝试运行一个简单的单元测试,以确保一切都设置正确,并且在编译期间遇到了许多问题来解决错误。

当运行测试套件时,Jest成功地找到了我试图测试的文件,并在第1行生成了以下意外的标识符错误消息。是不是少了点什么?我已经尝试解决这个问题很长一段时间了。

代码语言:javascript
复制
/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

代码语言:javascript
复制
<template>
        <div class="test">
        </div>
</template>

<script>
    export default {
        name: 'test',
        components: { },
        data() {
            return {

            }
        },
        methods: {
            helloWorld() {
                return 'hello world';
            }
        }
    }
</script>

Test.spec.js

代码语言:javascript
复制
import Test from './Test.vue'

describe('Test',() => {
   it('test', () => {
     expect(true).toBe(true);
   });
});

package.json

代码语言:javascript
复制
"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"
    }
  }
EN

回答 1

Stack Overflow用户

发布于 2018-12-26 19:10:20

您在测试中使用的是ES6特性,即import语句,因此您需要使用预设将它们编译成ES5。

创建一个babel.config.js并添加@babel/preset-env,如下所示:

代码语言:javascript
复制
//babel.config.js
module.exports = {
  presets: ["@babel/preset-env"]
};

接下来,在jest设置下的package.json中,让jest知道测试代码的root所在的位置,以及jest将递归搜索的module directories,如下所示:

代码语言:javascript
复制
//package.json
"roots": [
  "test"
],
"moduleDirectories": [
  "test",
  "node_modules"
],
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52807578

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档