javascript - gulp-istanbul、isparta 和 ES6 测试覆盖率

标签 javascript node.js unit-testing istanbul isparta

我正在构建一个 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)

这意味着 istanbul 无法识别 ES6 代码。我可能错过了一些东西。

所以我的问题是:

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

最佳答案

首先从 npm 安装“babel”。

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

关于javascript - gulp-istanbul、isparta 和 ES6 测试覆盖率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34673318/

相关文章:

spring - 无法加载 TestContextBootstrapper - Spring 单元测试

php - 使用现有的迁移表进行 Laravel 单元测试

javascript - 如何使用 jQuery 找到第一行不包含所有由 "&nbsp"填充的单元格的行?

javascript - 反转二进制数组?

javascript - 仅适用于手机的输入类型日期

javascript - 在 html 5 代码中嵌套 API

javascript - 为什么我从我的 regex.exec 中得到一个值?

Django、socket.io、node.js - 管理私有(private)消息和群组对话

node.js - 为什么我会在 : "deasync" & "node build.js", "fsevents"& "node install"、 "node-gyp"、 "make"上出现这些错误 "yarn add"错误

C# 压力测试 - 模拟对给定共享资源的多次访问