【问题标题】:Unit Testing Vue Component - Jest Setup - Unexpected Identifier error单元测试 Vue 组件 - 玩笑设置 - 意外的标识符错误
【发布时间】:2019-03-19 08:10:56
【问题描述】:

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

运行测试套件时,Jest 成功找到了我要测试的文件,并在第 1 行生成以下 Unexpected Identifier 错误消息。 知道这是为什么吗?有什么东西不见了吗?很长一段时间以来,我一直在尝试解决此问题。

/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"
    }
  }

【问题讨论】:

    标签: javascript unit-testing vue.js npm jestjs


    【解决方案1】:

    您在测试中使用 ES6 功能,即 import 语句,因此您需要使用预设将它们编译为 ES5。

    创建一个babel.config.js并添加@babel/preset-env,像这样,

    //babel.config.js
    module.exports = {
      presets: ["@babel/preset-env"]
    };
    

    接下来,在你的 package.json 中 jest 设置下,让 jest 知道你的测试代码的root 所在位置,以及 jest 会递归搜索到的module directories,像这样,

    //package.json
    "roots": [
      "test"
    ],
    "moduleDirectories": [
      "test",
      "node_modules"
    ],
    

    【讨论】:

      猜你喜欢
      • 2020-02-11
      • 2019-08-02
      • 2019-11-19
      • 1970-01-01
      • 2018-12-18
      • 1970-01-01
      • 2019-09-12
      • 1970-01-01
      • 2019-05-01
      相关资源
      最近更新 更多