Я пытаюсь интегрировать свои существующие тестовые процессы, чтобы теперь включить React, но я борюсь с частью покрытия кода. Я смог проверить, что мои модульные тесты работают нормально, следуя этому проекту/учебнику - https://github.com/danvk/mocha-react - http://www.hammerlab.org/2015/02/14/testing-react-web-apps-with-mocha/
Я использую Стамбул для покрытия моего кода node, и он работает очень хорошо. Тем не менее, у меня возникли проблемы с тем, чтобы он закрывал файлы jsx, которые я использую в своих тестах.
Вот пример существующей задачи в Стамбуле, которая также отлично работает на ванильном js (node backend code)
var mocha = require('gulp-mocha');
var istanbul = require('gulp-istanbul');
gulp.task('test-api', function (cb) {
gulp.src(['api/**/*.js'])
.pipe(istanbul()) // Covering files
.pipe(istanbul.hookRequire()) // Force `require` to return covered files
.on('finish', function () {
gulp.src(['test/api/*.js'])
.pipe(mocha())
.pipe(istanbul.writeReports()) // Creating the reports after tests runned
.on('end', cb);
Моя проблема (я думаю): я не могу заставить Стамбул распознавать файлы jsx, или они не сравниваются с тем, что было запущено в тестах. Я попытался использовать gulp -реативный модуль, чтобы предварительно скомпилировать jsx в js, чтобы его можно было использовать в Стамбуле, но я не уверен, что он работает. Это не рассматривается как-то, и я не уверен, где проблема.
var mocha = require('gulp-mocha');
var istanbul = require('gulp-istanbul');
var react = require('gulp-react');
gulp.task('test-site-example', function (cb) {
gulp.src(["site/jsx/*.jsx"]) //Nothing is being reported by Istanbul (not being picked up)
.pipe(react()) //converts the jsx to js and I think pipes the output to Istanbul
.pipe(istanbul())
.pipe(istanbul.hookRequire()) // Force `require` to return covered files
.on('finish', function () {
gulp.src(['test/site/jsx/*.js'], { //tests run fine in mocha, but nothing being shown as reported by mocha (not covered)
read: false
})
.pipe(mocha({
reporter: 'spec'
}))
.pipe(istanbul.writeReports())
.on('end', cb);
});
;
});
Любые идеи, что я делаю неправильно? Или какой-либо ключ о том, как интегрировать тестировщика (желательно Стамбул) в проект Gulp -Mocha-React?