Sto cercando di integrare i miei processi di test esistenti per includere ora React, ma sto lottando sulla parte di copertura del codice. Sono stato in grado di far funzionare i miei test unitari seguendo questo progetto/tutorial - https://github.com/danvk/mocha-react - http://www.hammerlab.org/2015/02/14/testing-react-web-apps-with-mocha/Come coprire i file React jsx a Istanbul?
Ho utilizzato Istanbul per coprire il mio codice nodo e funziona piuttosto bene. Tuttavia, ho difficoltà a farlo per coprire i file jsx che sto usando nei miei test.
Ecco un esempio di un compito di Istanbul esistente, che funziona anche bene su js vaniglia (nodo codice backend)
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);
Il mio problema (credo) è che non riesco a Istanbul per riconoscere i file JSX o non vengono confrontati con ciò che è stato eseguito nei test. Ho provato a utilizzare lo gulp-react module per precompilare jsx a js in modo che possa essere utilizzato da Istanbul, ma non sono sicuro che funzioni. Non è coperto in qualche modo e non sono sicuro di quale sia il problema.
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);
});
;
});
Qualche idea su cosa sto facendo male? O qualche indizio su come integrare un corridore di prova (preferibilmente Istanbul) in un progetto Gulp-Mocha-React?
questa libreria funziona piuttosto bene. Grazie –