Ich habe eine Reihe von gulp.js Ziele für die Ausführung meiner Mokka-Tests, die wie ein Charme durch gulp-mocha laufen. Frage: Wie debugge ich meine Mocha-Tests, die durch Schluck laufen? Ich möchte etwas wie node-inspector verwenden, um Unterbrechungspunkte in meinem src und Testdateien zu setzen, um zu sehen, was vor sich geht. Ich bin bereits in der Lage, dies zu erreichen durch den Knoten Aufruf direkt:Gulp: Ziel zu debuggen Mokka-Tests
node --debug-brk node_modules/gulp/bin/gulp.js test
Aber ich würde einen großen Schluck Ziel bevorzugen, dass das für mich hüllt, z.B .:
gulp.task('test-debug', 'Run unit tests in debug mode', function (cb) {
// todo?
});
Ideen? Ich möchte ein bash
Skript oder eine andere separate Datei vermeiden, da ich versuche, ein wiederverwendbares gulpfile
mit Zielen zu erstellen, die von jemandem verwendet werden können, der Schluck nicht kennt.
Hier ist meine aktuelle gulpfile.js
// gulpfile.js
var gulp = require('gulp'),
mocha = require('gulp-mocha'),
gutil = require('gulp-util'),
help = require('gulp-help');
help(gulp); // add help messages to targets
var exitCode = 0;
// kill process on failure
process.on('exit', function() {
process.nextTick(function() {
var msg = "gulp '" + gulp.seq + "' failed";
console.log(gutil.colors.red(msg));
process.exit(exitCode);
});
});
function testErrorHandler(err) {
gutil.beep();
gutil.log(err.message);
exitCode = 1;
}
gulp.task('test', 'Run unit tests and exit on failure', function() {
return gulp.src('./lib/*/test/**/*.js')
.pipe(mocha({
reporter: 'dot'
}))
.on('error', function (err) {
testErrorHandler(err);
process.emit('exit');
});
});
gulp.task('test-watch', 'Run unit tests', function (cb) {
return gulp.src('./lib/*/test/**/*.js')
.pipe(mocha({
reporter: 'min',
G: true
}))
.on('error', testErrorHandler);
});
gulp.task('watch', 'Watch files and run tests on change', function() {
gulp.watch('./lib/**/*.js', ['test-watch']);
});
vielleicht childprocess.exec benutzen? http://nodejs.org/api/child_process.html#child_process_child_process_exec_command_options_callback –
@BrianGlaz das ist eine gute Idee. Der einzige Nachteil besteht darin, dass Sie die Ausgabe des Prozesses erst dann erhalten, wenn die Aufgabe abgeschlossen ist und nicht mehr im Gange ist. Gibt es eine Möglichkeit, dies zu tun, während progressive Ausgabe auf Standard ausgegeben wird? –
Schauen Sie sich child_process.spawn() http://nodejs.org/api/child_process.html#child_process_child_process_spawn_command_args_options an. Es ist sehr ähnlich, aber fungiert als Event-Emitter, mit dem Sie Callbacks anhängen können. Überprüfen Sie den Link für Beispiele. –