如何使用Nodeunit测试GRUNT任务回调



我有一个节点测试,可以测试我的自定义grunt任务:

'use strict';
var grunt = require('grunt');
exports.when_executing_single_command = {
    it_should_execute_successfully: function(test) {
        test.expect(1);
        grunt.initConfig({
            mytask: {
                success: function(data) {
                    test.strictEqual(data, '1');
                    test.done();
                }
            }
        });
        require('../src/mytask')(grunt);
        grunt.registerTask('default', ['mytask']);
        grunt.task.run('default');
    }
};

基于节点文档,测试似乎是正确设置的,但是从未执行回调,并且测试继续无限期运行。

我知道在正确的条件下肯定执行回调,因此这不是我任务的错误。

在这里完全相同。

在我看来,咕unt是排队的任务调用。因此,如果您使用Grunt nodeunit命令启动测试,则无法在测试中启动另一个任务,它将被排队,并且只能在完成节点任务后运行。

有一个解决方案,但它不适合我的情况,它可能适用于您:

grunt.util.spawn({
   grunt: true,
   args: ["your_task_name"],
   opts:{
      stdio: 'inherit'
   }
}, function(){
   // Do something
})

grunt.util.spawn

最新更新