我正在构建一个REST API,我在其中进行了许多单元测试。
我现在需要有一些关于它们的信息,比如代码覆盖率。
我读过许多关于Istanbul和Isparta的文章,以及他们运行ES6代码(this article)的测试覆盖率(使用mocha帮助)的能力,所以我想使用它们。
我正在使用NodeJS 0.12.7,我使用Babel转换器将我的ES6代码转换为ES5。
我使用如下的gulp任务:
/* Unit test task */
gulp.task('pre-test', function() {
return gulp.src(['src/app/**/*.js'])
.pipe(plumber())
.pipe(istanbul({
instrumenter: isparta.Instrumenter,
includeUntested: true
}))
.pipe(istanbul.hookRequire());
});
gulp.task('test:unit', ['pre-test'], function() {
return gulp.src(['src/test/unit/**/*.js'])
.pipe(mocha({
reporter: 'spec'
}))
.pipe(istanbul.writeReports({}));
});
但是,在尝试使用下面的工具时,我遇到了以下类型的错误:
C:\projects\nodejs\project\src\test\unit\core\TestConfReader.js:1
(function (exports, require, module, __filename, __dirname) { import ConfReade
^^^^^^
SyntaxError: Unexpected reserved word
at exports.runInThisContext (vm.js:73:16)
at Module._compile (module.js:443:25)
at Object.Module._extensions..js (module.js:478:10)
这意味着伊斯坦布尔无法识别ES6代码。我可能在那里错过了一些东西。
所以我的问题是:
我如何在我的ES6代码上进行单元测试并应用测试覆盖率(而不是在ES5代码上,在每个类构造函数中有许多生成的代码,如try / catch)和Node 0.12.7?
首先从npm安装'babel'。
然后在gulpfile的开头添加require('babel/register');
。