摩卡测试超时
Mocha tests timeout
我有一个注册函数的单元测试。我 return 一个承诺,但我收到一个错误:
Error: Timeout of 30000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves.
我已经尝试使用 done() 函数、异步等待、检查 Promise 拒绝 - 没有结果。
我的测试代码如下:
import authController from '../../../src/controllers/authController';
import { expect } from 'chai';
import sinon from 'sinon';
describe('Test register method', () => {
it('Register method should create new user', () => {
const req = {
file: sinon.spy(),
body: {
name: "John",
email: "johndoe@example.com",
phone: "123",
gender: "Male",
birthDate: "12-12-1992",
purpose: "Friends",
password: "Secret"
}
};
const res = {
status: function () {
return this;
},
json: sinon.spy()
};
return authController.register(req,res).then(() => {
expect(res.json.firstCall.lastArg.success).to.equal(true);
});
});
});
被测控制器代码:
https://github.com/elszczepano/FindMates-API/blob/master/src/controllers/authController.js
我解决了!
第一的:
我必须在 package.json 中将超时设置为 10000 毫秒:
"test": "nyc mocha --require @babel/register --require @babel/polyfill tests/unit/**/*.test.js --timeout 10000"
第二个:
我必须创建与我的 MongoDB 数据库的连接(当然在测试后断开连接)。
before(done =>{
mongoose.connect('mongodb://localhost:27017/FindMates', {useNewUrlParser: true });
mongoose.set('useCreateIndex', true);
mongoose.set('useFindAndModify', false);
done();
});
after(done => {
mongoose.disconnect();
done();
});
我有一个注册函数的单元测试。我 return 一个承诺,但我收到一个错误:
Error: Timeout of 30000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves.
我已经尝试使用 done() 函数、异步等待、检查 Promise 拒绝 - 没有结果。
我的测试代码如下:
import authController from '../../../src/controllers/authController';
import { expect } from 'chai';
import sinon from 'sinon';
describe('Test register method', () => {
it('Register method should create new user', () => {
const req = {
file: sinon.spy(),
body: {
name: "John",
email: "johndoe@example.com",
phone: "123",
gender: "Male",
birthDate: "12-12-1992",
purpose: "Friends",
password: "Secret"
}
};
const res = {
status: function () {
return this;
},
json: sinon.spy()
};
return authController.register(req,res).then(() => {
expect(res.json.firstCall.lastArg.success).to.equal(true);
});
});
});
被测控制器代码:
https://github.com/elszczepano/FindMates-API/blob/master/src/controllers/authController.js
我解决了! 第一的: 我必须在 package.json 中将超时设置为 10000 毫秒:
"test": "nyc mocha --require @babel/register --require @babel/polyfill tests/unit/**/*.test.js --timeout 10000"
第二个: 我必须创建与我的 MongoDB 数据库的连接(当然在测试后断开连接)。
before(done =>{
mongoose.connect('mongodb://localhost:27017/FindMates', {useNewUrlParser: true });
mongoose.set('useCreateIndex', true);
mongoose.set('useFindAndModify', false);
done();
});
after(done => {
mongoose.disconnect();
done();
});