1

我正在构建一个 REST API,其中有许多单元测试。

我现在需要一些关于它们的信息,比如代码覆盖率。

我已经阅读了许多关于伊斯坦布尔Isparta的文章,以及它们运行 ES6 代码(本文)的测试覆盖率(在 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 代码。我可能在那里遗漏了一些东西。

所以我的问题是:

如何使用 Node 0.12.7 对我的 ES6 代码(而不是 ES5 代码,在每个类构造函数中有许多生成的代码,例如 try/catch)进行单元测试和应用测试覆盖率?

4

1 回答 1

0

首先从 npm 安装“babel”。

然后require('babel/register');在 gulpfile 的开头添加。

于 2016-01-13T16:03:38.557 回答