摩卡异步测试,调用done()问题

时间:2015-08-19 12:44:58

标签: javascript testing asynchronous mocha

我正在开发postcss插件,并希望用mocha进行测试。 这是我的测试:

--incremental

但它失败了,我得到function exec(cb) { postcss() .use(regexp) .process(source) .then(cb); } it('should add warnings to messages', function(done) { var expected = 'somemessage'; var message = ''; function getMessage(result) { message = result.messages; assert.equal(message, expected); done(); } exec(getMessage); });

我做错了什么?

2 个答案:

答案 0 :(得分:0)

您的回调未在默认超时2000毫秒内被调用。

如果您确定您的exec插件没有任何问题,预计需要超过2秒,您可以使用

增加时间

In mocha testing while calling asynchronous function how to avoid the timeout Error: timeout of 2000ms exceeded.

答案 1 :(得分:0)

我自己找到了解决方案!我们需要在execit中返回承诺,因此done()

中没有必要
function exec(cb) {
    return postcss()
        .use(regexp)
        .process(source)
        .then(cb);
}

it('should add warnings to messages', function() {
    var expected = 'somemessage';
    var message = '';

    function getMessage(result) {
        message = result.messages;
        assert.equal(message, expected);
    }

    return exec(getMessage);
});