【问题标题】:clean if mocha passes tests如果 mocha 通过测试,则清洁
【发布时间】:2015-07-13 07:21:10
【问题描述】:

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

});

【问题讨论】:

  • 摩卡从哪里来的?
  • npm install gulp-mocha --save-dev

标签: javascript node.js gulp mocha.js


【解决方案1】:

我找到了解决办法:

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 块可能不起作用到异步性质)。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-06
    • 2014-08-05
    • 2016-11-19
    相关资源
    最近更新 更多