我有一套gulp.js目標,用於運行我的摩卡測試,其工作方式類似於通過gulp-mocha運行的魅力。問題:我如何調試通過吞嚥運行的摩卡測試?我想用node-inspector之類的東西在我的src中設置斷點並測試文件以查看發生了什麼。我已經能夠通過直接調用節點來實現:Gulp:調試摩卡測試的目標
node --debug-brk node_modules/gulp/bin/gulp.js test
但我更喜歡一飲而盡的目標,它包裝這對我來說,例如:
gulp.task('test-debug', 'Run unit tests in debug mode', function (cb) {
// todo?
});
想法?我想避免使用bash
腳本或其他單獨的文件,因爲我試圖創建一個可重複使用的gulpfile
,其目標可由不知道吞嚥的人使用。
這是我目前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']);
});
也許使用childprocess.exec? http://nodejs.org/api/child_process.html#child_process_child_process_exec_command_options_callback –
@BrianGlaz這是一個好主意。唯一的缺點是,在任務完成之前,您不會從流程中獲得輸出結果,而不是隨時待命。有沒有辦法做到這一點,同時獲得逐步輸出到標準輸出? –
檢出child_process.spawn()http://nodejs.org/api/child_process.html#child_process_child_process_spawn_command_args_options。它非常相似,但作爲一個事件發射器讓你附加回調。檢查鏈接的例子。 –