0

我有一个 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 文档,测试似乎设置正确,但从未执行回调,并且测试继续无限期地运行。

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

4

1 回答 1

1

这里完全相同的问题。

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

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

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

grunt.util.spawn

于 2014-07-11T16:14:59.827 回答