摩卡错误:超过2000毫秒的超时。确保在此测试中调用done()回调

时间:2017-08-14 10:08:10

标签: javascript mocha

我尝试测试异步功能。但是mocha总是记录超时错误。

// iframe.js
var iframe_client_util = {};
iframe_client_util.findByKeyFrame = function (keyFrame, cb) {
    ModelIframeClient.find({key_frame: keyFrame}).exec(function (err, rs) {
        if (err) return cb(err, null);

        cb(null, rs);
    });
};



// test.js
var assert = require("assert");
var iframe_util = require("./iframe");
describe('1. _checkAuthorization', function () {
    it("Using setTimeout to simulate asynchronous code!", function (done) {
        iframe_util.findByKeyFrame("598ad74b1ca8870b0072b6e9", function (err, result) {
            assert.equal(true, true);
            done();
        });
    });
});

然后当我运行mocha test.js时,mocha会记录此错误:

Error: timeout of 2000ms exceeded. Ensure the done() callback is being called in this test.

我遵循此文件:https://mochajs.org/#asynchronous-code

2 个答案:

答案 0 :(得分:0)

您可以使用this.timeout(x);或在调用mocha时使用mocha --timeout x指定超时来设置每个测试的超时,其中x是超时量。

var assert = require("assert");
var iframe_util = require("./iframe");
describe('1. _checkAuthorization', function () {
    it("Using setTimeout to simulate asynchronous code!", function (done) {
        this.timeout(x); // x is timeout amount
        iframe_util.findByKeyFrame("598ad74b1ca8870b0072b6e9", function (err, result) {
            assert.equal(true, true);
            done();
        });
    });
});

答案 1 :(得分:0)

我解决了这个问题。我没有连接到mongoDB,iframe_util.findByKeyFrame函数无法运行。它需要mongoose.connect();在描述之前。