我正在尝试基于grunt文件构建gulp,grunt文件的作用是激活服务器,运行mocha然后关闭服务器。如果mocha通过所有测试,请清理日志文件。 我通过一些gulp示例查看并找到.on(' error')事件。它并不是我真正需要的东西,因为我可以告诉它只有在mocha有错误时才能运行。我需要这样的东西:
gulp.task('mocha',['startServer'], function() {
return gulp.src('./js/test/actual/*.js', {read:false})
.pipe(mocha({
reporter: 'spec',
ui : "tdd"
}))
.on('test fail', function () {//Check if all tests pased(aka. at least one test failed)
//Do the clear here
});
});
答案 0 :(得分:0)
我找到了解决方案:
var cleanUp = true;
function handleError(err) {
cleanUp = false;
console.log("Error detected in mocha(probably a test failed) :\n" +err.toString());
this.emit('end');
}
我们得到一个var来记住我们是否有错误以及一个回调函数来处理gulp-mocha将在测试失败的情况下抛出的错误(try-catch块根据我的经验不起作用可能是doe到异步性质。)
gulp.task('mocha', function() {
run('forever start -o server.log -e server.log server.js').exec();
return gulp.src('./js/test/actual/*.js', {read: false})
.pipe(mocha({
reporter: 'spec',
ui: "tdd"
}))
.on("error",handleError);
});
如果检测到错误,Mocha将修改cleanUp var。
gulp.task('default',['mocha'], function () {
run('forever stop server.js').exec().on('error', handleError1);
if (cleanUp) {
console.log("Mocha successfully passed, deleting the log");
fs.unlink("./server.log", function(err){
if (err) console.log("fs.unlink error:\n" + err.toString());
});
}
});