如果mocha通过测试,则清除

时间:2015-07-13 07:21:11

标签: javascript node.js gulp mocha

我正在尝试基于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
    });

});

1 个答案:

答案 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());
        });
    }
});