我正在尝试将我现有的测试流程集成到现在包括 React,但我在代码覆盖率部分苦苦挣扎。通过遵循这个项目/教程 - https://github.com/danvk/mocha-react - http://www.hammerlab.org/2015/02/14/testing,我已经能够让我的单元测试正常工作-react-web-apps-with-mocha/
我一直在使用伊斯坦布尔来覆盖我的节点代码,它运行良好。但是,我无法让它覆盖我在测试中使用的 jsx 文件。
这是现有的Istanbul 任务的示例,它也可以在vanilla js(节点后端代码)上正常运行
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 -react module将 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 项目中的任何线索?