在我的节点应用程序中,我使用mocha来测试我的代码。当使用mocha调用许多异步函数时,我得到超时错误(错误:超过2000ms超时)。我该如何解决这个问题?

var module = require('../lib/myModule');
var should = require('chai').should();

describe('Testing Module', function() {

    it('Save Data', function(done) {

        this.timeout(15000);

        var data = {
            a: 'aa',
            b: 'bb'
        };

        module.save(data, function(err, res) {
            should.not.exist(err);
            done();
        });

    });


    it('Get Data By Id', function(done) {

        var id = "28ca9";

        module.get(id, function(err, res) {

            console.log(res);
            should.not.exist(err);
            done();
        });

    });

});

当前回答

有点晚了,但将来有人可以用这个…您可以通过更新包中的脚本来增加测试超时。Json格式:

"脚本":{ "test": "test——timeout 10000" //调整为你需要的值 }

使用test命令运行测试

其他回答

确保解决/拒绝测试用例中使用的承诺,无论是间谍还是存根,确保它们解决/拒绝。

如果你使用箭头函数:

it('should do something', async () => {
  // do your testing
}).timeout(15000)

我的问题是没有发送回响应,所以它挂起了。如果你正在使用express,请确保res.send(data), res.json(data)或任何你想要使用的api方法为你正在测试的路由执行。

有点晚了,但将来有人可以用这个…您可以通过更新包中的脚本来增加测试超时。Json格式:

"脚本":{ "test": "test——timeout 10000" //调整为你需要的值 }

使用test命令运行测试

对我来说,问题在于描述函数, 哪一个当提供了箭头功能,导致摩卡错过了 超时,并且行为不一致。(使用ES6)

由于没有承诺被拒绝,我一直得到这个错误,不同的测试在描述块内失败

所以这是它不正常工作时的样子:

describe('test', () => { 
 assert(...)
})

这需要匿名函数

describe('test', function() { 
 assert(...)
})

希望对大家有所帮助,我的配置如下: (nodejs: 8.4.0, npm: 5.3.0, mocha: 3.3.0)