如何在运行摩卡testing之前等待一个咕噜的任务完成

简而言之…

我有一些我想要testing的外部configuration的咕噜任务(确保他们做他们应该做的)。 所以我想写一个摩卡testing在before函数中运行任务,并声明一切顺利。

…和一些细节

在我的gruntfile有类似的东西

 # Load task configs from `grunt` dir. configs = require('load-grunt-configs') grunt, config: src: ['tasks/*{.js,.json,.coffee,.cson}'] # Load all **grunt tasks** with patter `grunt-*` require('load-grunt-tasks') grunt, pattern: [ 'grunt-*' ] # Pass configs to grunt grunt.initConfig configs 

并随后进行一些任务注册…

然而,我现在可以访问我的less任务驻留在我的tasks文件夹(使用grunt-contrib-lessless.cson

到现在为止还挺好。 🙂

我使用chai来断言:

 describe('Checking static resources for dev', function () { describe('less task', function () { before(function () { grunt.task.run('less'); }); it('should have a compiled css file for docs', function () { grunt.file.isFile('public/css/docs.css').should.be.ok; grunt.file.isFile('public/css/docs.css.map').should.be.ok; }); 

正如所料,testing运行后,任务完成,因为它不是asynchronous,我不知道一种方式告诉grunt(不修改现有的任务/configuration),它应该调用一个可能的donefunction, 然后做出断言。

我也尝试了grunt-run-task但是无法运行任何任务(他们放弃了超时,尽pipe我给了他们超过20秒的时间来完成)。

猜猜我正在寻找类似的东西

 before(function (done) { grunt.task.run('less', done); }); 

任何人的build议?