如何使用nodeunit测试grunt任务回调?

时间:2014-03-07 11:45:46

标签: node.js callback gruntjs nodeunit

我有一个nodeunit测试来测试我的自定义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');
    }
};

基于nodeunit documentation,测试似乎设置正确,但回调永远不会执行,测试会继续无限期运行。

我知道在正确的条件下回调肯定会被执行,所以这不是我任务中的错误。

1 个答案:

答案 0 :(得分:1)

这里完全相同的问题。

在我看来,grunt正在排队任务调用。因此,如果使用grunt nodeunit命令启动测试,则无法在测试中启动其他任务,它将排队并且只能在完成nodeunit任务后运行。

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

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

grunt.util.spawn