带有babel的ES6模块的Karma单元测试

时间:2017-01-30 10:56:41

标签: javascript ecmascript-6 karma-jasmine babeljs

我正按照karma-babel-preprocessor的说明在我正在工作的项目中设置单元测试,但我总是出错

'require未定义'

我的karma.conf.js如下:

files: [
   { pattern: './test/unit/*.spec.js', watched: true },
   { pattern: './src/js/es6_modules/*.js', watched: false },
],

preprocessors: {
    './src/js/es6_modules/*.js': ['babel'],
    './test/unit/*.spec.js': ['babel'] //, 'coverage'
},

babelPreprocessor: {
  options: {
    presets: ['es2015'],
    sourceMap: 'inline'
  },
  filename: function (file) {
    return file.originalPath.replace(/\.js$/, '.es5.js');
  },
  sourceFileName: function (file) {
    return file.originalPath;
  }
}

src / js / es6_modules中的脚本导出了ES6类。类似的东西:

export default class MyClass {

}

我的spec文件需要导入

import { MyClass } from "../../src/js/es6_modules/myclass";

我在SO上看到一些帖子说我需要使用browserify,但我找不到任何关于如何在业力中与babel一起使用的文档(或示例)。有谁知道要正确配置吗?

1 个答案:

答案 0 :(得分:0)

我使用browserify而不是babel修复它,并使用babelify转换

preprocessors: {
    './src/js/es6_modules/*.js': ['browserify'],
    './test/unit/*.spec.js': ['browserify']
},

browserify: {
    debug: true,
    "transform": [
  [
    "babelify",
    {
      presets: ["es2015"]
    }
  ]
]
},