在 Angular 1.3/JSPM/Babel 项目上使用 Karma 进行单元测试

Unit testing with Karma on an Angular 1.3/JSPM/Babel project

所以我正在使用 jspm 和 babel 建立一个 angular 1.3 es6 项目。我正在使用 es6 的 import/export 特性。我安装了 karma 和 karma-jspm,可以 运行 基本测试没有问题。当我尝试将我的模块之一导入测试以对其进行测试时,我在 karma 中遇到错误。

Error loading "app/services/chart-data/chart-data.spec" at http://localhost:9876/base/app/services/chart-data/chart-data.spec.js Error loading "npm:babel-core@5.3.3" at http://localhost:9876/base/jspm_packages/npm/babel-core@5.3.3.js Error evaluating http://localhost:9876/base/jspm_packages/npm/babel-core@5.3.3.js Error evaluating http://localhost:9876/base/jspm_packages/npm/babel-core@5.3.3/browser.js TypeError: 'undefined' is not a function (evaluating 're.test.bind(re)') at undefined

这是我的业力配置文件的一部分:

frameworks: ['jspm', 'jasmine'],


// list of files / patterns to load in the browser
files: [
],

jspm: {
  // Edit this to your needs
  loadFiles: ['app/**/*.spec.js'],
  serveFiles: []
},

这是一个示例测试:

import {chartData} from 'chart-data.service';

describe('Example test', function() {
  it('should be foo', function() {
      expect('foo').toBe('foo');
  });
});

我一直没有找到答案,甚至在 jspm gitter 中寻求帮助,但到目前为止一无所获。

项目中的其他一切似乎都工作正常,如果删除导入行,我可以 运行 进行测试。任何帮助或建议将不胜感激。

看起来您正在 运行 不支持 Function.prototype.bind 的浏览器中进行测试。 Babel 需要这个功能

您可以通过 karma-phantomjs-shim 修复,或者尝试使用新版本的浏览器。 PhantomJS从2.0版本开始有这个功能