错误:超时超过2000毫秒。对于异步测试和挂钩,请确保调用了“ done()”;

时间:2019-03-02 18:41:00

标签: node.js unit-testing testing mocha chai

尝试使用timeout和done()函数来解决此问题,但是它无法正常工作,显示错误:超过2000ms的超时。对于异步测试和挂钩,请确保调用了“ done()”;错误。

控制器

var plan_details = require('../../models/plan_details');
module.exports = function () {
return {
    getPlansList: function (request, callback) {
        plan_details.find().sort({ createdAt: -1 }).exec().then((result) => {
            log.info("Getting All Plan Details");
            callback({ status: 200, success: true, result: result });
        }).catch(err => {
            log.error("Getting error while getting all plans");
            log.error(err);
            callback({ status: 400, success: false, message: "Unable to 
            Process your Request" });
        });
    }
 }}

测试用例

var expect = require("chai").expect;
var request = require("request");
var PlanMgmnt = require('../routes/PlanManagement/PlanManagement')();

describe("--Plan Management API", function () {
describe("--Add Plan API", function () {
    it("--returns status 200", function (done) {
        PlanMgmnt.getPlansList({}, function(res){
            console.log(res);
        });
        // done();
    });
});});

它不会在console.log中打印 res

3 个答案:

答案 0 :(得分:0)

找到了一个解决方案,该问题是由于MongoDB连接所致,单元测试用例未在该处获得MongoDB连接,因为单元测试用例无法执行mongoose函数。

为解决此问题,添加了helper.js文件,在此文件中添加了猫鼬连接代码,在test命令中使用了helper.js文件 “ test”:“摩卡测试--require helper.js”。

或者也可以使用mongo-unit软件包。

参考:https://www.toptal.com/nodejs/integration-and-e2e-tests-nodejs-mongodb

答案 1 :(得分:-1)

  

您可以为每个套件或每个测试设置超时

describe('suite descripion', function(){
  this.timeout(15000);

it('test description', function(done){
  this.timeout(15000);
});
});

答案 2 :(得分:-1)

done()应该放在如下位置:

describe("--Add Plan API", function () {
    it("--returns status 200", function (done) {
        PlanMgmnt.getPlansList({}, function(res){
            console.log(res);
            done();
        });
    });
});

希望有帮助