Тестовое покрытие gulp-istanbul, испарта и ES6

Я строю REST API, в котором у меня много модульных тестов.

Теперь мне нужна информация о них, например, покрытие кода.

Я прочитал много статей, посвященных Стамбулу и Испарте, и их способности выполнять тестовое покрытие (с помощью мокко) кода ES6 ( эта статья), поэтому я хотел их использовать.

Я работаю с NodeJS 0.12.7 и использую транспортер Babel для преобразования своего кода ES6 в ES5.

Я использую задачи глотка как следующие:

/* 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?

1 ответ

Сначала установите 'babel' с npm.

Затем добавьте require('babel/register'); в начале вашего глотка

Другие вопросы по тегам