Тестовое покрытие 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');
в начале вашего глотка