Babel / Jest:导出默认类的问题

时间:2019-07-17 16:28:43

标签: javascript vue.js ecmascript-6 jestjs

我正在尝试使用jest测试以下内容,并且遇到了与babel有关的问题,特别是导出默认类。请考虑以下...

export default class Test {
  get() {
    return {}
  }
}

具有这样的测试设置...

import Test from './test'

describe('test', () => {
  it('should', () => {
    // [...]
  });
});

失败,出现以下错误...

  

node_modules/@babel/runtime-corejs2/helpers/esm/classCallCheck.js:1       ({“对象。”:功能(模块,导出,要求,__目录名,__文件名,全局,笑话){导出   默认函数_classCallCheck(instance,Constructor){                                                                                                ^^^^^^

SyntaxError: Unexpected token export

这是vue网络应用程序。我有以下配置...

// babel.config.js
module.exports = {
  presets: ['@vue/app', '@babel/env']
};
// jest.config.js
module.exports = {
  collectCoverage: true,
  collectCoverageFrom: [
    'src/**'
  ],
  coverageDirectory: '.coverage',
  moduleFileExtensions: [
    'js',
    'json',
    'vue'
  ],
  transform: {
    '^.+\\.vue$': 'vue-jest',
    '.+\\.(css|styl|less|sass|scss|png|jpg|ttf|woff|woff2)$': 'jest-transform-stub',
    '^.+\\.js$': 'babel-jest'
  },
  moduleNameMapper: {
    '^@/(.*)$': '<rootDir>/src/$1'
  },
  testMatch: [
    '<rootDir>/src/**/*.spec.js'
  ],
  transformIgnorePatterns: ['<rootDir>/node_modules/']
};

最后,我的测试脚本...

// package.json
[...]
"test": "jest"
[...]

这让我发疯了,因为我所有的.vue文件和测试都能正常工作。我在使用上述特定语法的某些核心.js文件中仅遇到问题。

我该如何解决?

1 个答案:

答案 0 :(得分:0)

我最终删除了@vue/app作为预设。这似乎无关紧要,因为我的所有vue测试在@babel/env上都可以正常工作。我的配置结果如下...

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

我觉得这有点反气候。我没有深入研究@vue/app可能引起这种观察到的行为的原因,但是显然我不需要继续前进。