2017-08-14 44 views
-1

我试图测试一个异步函数。但摩卡总是记录超时错误。摩卡错误:超过2000毫秒超时。确保在此测试中调用done()回调

// 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

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

我按照这份文件:https://mochajs.org/#asynchronous-code

+1

该测试似乎需要超过2000毫秒。也许测试一个假的异步函数? – evolutionxbox

+0

@evolutionxbox iframe_util.findByKeyFrame是“假异步功能”? –

回答

0

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

+0

如果您在此删除自己的答案,则应该可以删除您的问题。这比问社区“关闭这个问题”要快。 – Louis

0

您可以使用this.timeout(x);或当您拨打摩卡指定超时值时使用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

当我设置'this.timeout(3000);'显示'错误:超过3000ms超时。确保done()回调在本次测试中被调用。只是不知道为什么。 –

+0

尝试用更大的超时时间 –

+1

我试着用更大的超时时间。但没有任何改变。 '错误:超过300000ms超时。确保在此测试中正在调用done()回调。' –

相关问题