我正在尝试为使用Express和MongoDB制作的REST API设置测试。我想使用mocha
,chai
和chai-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();
});
});
});
});
答案 0 :(得分:1)
假设您的连接工作正常且只有超时问题,您需要使用 this.timeout()函数将超时延长到超出默认值(2000ms)。例如,在beforeEach函数中添加this.timeout(10000)会将超时设置为10秒,这会给User.remove调用更多时间来完成。
以下是此答案中的一个示例:How to set timeout on before hook in mocha?