在 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版本开始有这个功能
所以我正在使用 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版本开始有这个功能