Mocha beforeEach超时超时

时间:2018-04-19 13:31:31

标签: node.js express mocha chai

我正在尝试为使用Express和MongoDB制作的REST API设置测试。我想使用mochachaichai-http,但我得到了一个奇怪的行为,似乎beforeEach函数超出了超时时间喜欢它永远不会被解决。我怎么能解决这个问题?

//During the test the env variable is set to test
process.env.NODE_ENV = 'test';

let mongoose = require("mongoose");
let User = require('../models/User');

//Require the dev-dependencies
let chai = require('chai');
let chaiHttp = require('chai-http');
let app = require('../app');
let should = chai.should();

chai.use(chaiHttp);
//Our parent block
describe('Users', function () {
  beforeEach(function (done) { //Before each test we empty the database
    User.remove({}, function (err) { 
      done();         
    });     
  });
  /*
   * Test the /GET route
   */
  describe('/GET users', function () {
    it('it should GET all the users', function (done) {
      chai.request(app)
        .get('/users')
        .end(function (err, res) {
            res.should.have.status(200);
            res.body.should.be.a('array');
            res.body.length.should.be.eql(0);
          done();
        });
    });
  });

});

1 个答案:

答案 0 :(得分:1)

假设您的连接工作正常且只有超时问题,您需要使用 this.timeout()函数将超时延长到超出默认值(2000ms)。例如,在beforeEach函数中添加this.timeout(10000)会将超时设置为10秒,这会给User.remove调用更多时间来完成。

以下是此答案中的一个示例:How to set timeout on before hook in mocha?