модульные тесты vue-cli по умолчанию "Неожиданный токен {" ошибка - PullRequest
0 голосов
/ 30 ноября 2018

На самом деле я не трогал файл конфигурации, созданный vue-cli для модульных тестов, это файлы:

// jest.config.js
module.exports = {
  moduleFileExtensions: ['js', 'jsx', 'json', 'vue'],
  transform: {
    '^.+\\.vue$': 'vue-jest',
    '.+\\.(css|styl|less|sass|scss|svg|png|jpg|ttf|woff|woff2)$': 'jest-transform-stub',
    '^.+\\.jsx?$': 'babel-jest',
    '^.+\\.js$': 'babel-jest',
  },
  moduleNameMapper: {
    '^@/(.*)$': '<rootDir>/src/$1',
  },
  snapshotSerializers: ['jest-serializer-vue'],
  testMatch: ['**/tests/unit/**/*.spec.(js|jsx|ts|tsx)|**/__tests__/*.(js|jsx|ts|tsx)'],
  testURL: 'http://localhost/',
};

И все же, при попытке запустить следующий тест с npm run test:unit:

import { shallowMount } from '@vue/test-utils';
import App from '@/App.vue';

describe('App.vue', () => {
  it('renders props.msg when passed', () => {
    const msg = 'new message';
    const wrapper = shallowMount(App);
    expect(wrapper.text()).toMatch(msg);
  });
});

Я получаю следующую ошибку:

back-admin / tests / unit / app.spec.js: 1 ({"Object": функция (модуль, экспорт,require, __ dirname, __ filename, global, jest) {import {shallowMount} из '@ vue / test-utils';

SyntaxError: неожиданный токен {

Как будто babelне удалось проанализировать оператор импорта (в частности, {).

В чем причина этой проблемы?

1 Ответ

0 голосов
/ 11 июля 2019

Я только что задал похожий вопрос, здесь (в этом есть ответ внизу).

Я вижу в вашем файле jest.config.js, у вас есть '^.+\\.js$': 'babel-jest',который определенно должен забрать файл.Очевидно, Вавилон не делает этого, даже если ты сказал это.

Я решил эту проблему, добавив расширение к уже установленному параметру преобразования для jsx, которое будет выглядеть следующим образом: '^.+\\.(js|jsx)?$': 'babel-jest'.

Если это не сработает для вашего экземпляра, я постараюсь убедиться, что все ваши зависимости исправны.Список должен был выглядеть примерно так:

"devDependencies": {
    "@vue/cli-plugin-babel": "^3.9.0",
    "@vue/cli-plugin-eslint": "^3.9.0",
    "@vue/cli-plugin-unit-jest": "^3.9.0",
    "@vue/cli-service": "^3.9.0",
    "@vue/test-utils": "1.0.0-beta.29",
    "babel-core": "7.0.0-bridge.0",
    "babel-eslint": "^10.0.1",
    "babel-jest": "^23.6.0",
    "eslint": "^5.16.0",
    "eslint-plugin-vue": "^5.0.0",
    "vue-template-compiler": "^2.6.10"
  },

Надеемся, что добавим js works!

...