2015-07-13 2 views
0

Я пытаюсь построить глоток на основе файла grunt, что делает файл grunt, активирует сервер, запускает mocha, а затем закрывает сервер. Если мокка проходит все тесты, очистите файл журнала. Я смотрю через некоторые примеры глотки и нашел событие .on ('error'). Это не совсем то, что мне нужно, потому что из того, что я могу сказать, он работает только в том случае, если mocha имеет ошибку. Мне нужно что-то вроде этого:clean if 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

Откуда вы получаете мокко? – Dodekeract

+0

npm install gulp-mocha --save-dev –

ответ

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

Мы получаем вар, чтобы помнить, если мы были ошибки или нет, и функцию обратного вызова, чтобы иметь дело с ошибкой, что Глоток-мокко выбросит в случае сбойных тестов (блок 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()); 
     }); 
    } 
}); 
Смежные вопросы