第一个超时后,我正在测试我的快速端点和任何测试文件。它们在尝试执行数据库操作时会超时。
我导出服务器对象(在index.js中),并且在该文件中,有用于设置中间件,路由,数据库连接等的启动脚本。我尝试捕获在数据库上运行的任何代码中的错误,但是没有任何显示。我只知道访问数据库时超时。也许我关闭不正确,或者存在某些比赛条件。
const { Student } = require('../../../models/student');
const mocksdk = require('../../firebaseMock');
const { expect } = require('chai');
const request = require('supertest');
const mongoose = require('mongoose');
describe('authStudent Middleware', () => {
let token;
let server;
before(async () => {
server = require('../../../index');
// Create a firebase user and get the token
mocksdk.auth().autoFlush();
mocksdk.auth().createUser({
uid: '123',
email: 'test@mail.com',
password: 'test'
});
// Assign student role to user
mocksdk.auth().setCustomUserClaims({ role: 0 });
const user = await mocksdk.auth().getUser('123');
token = await user.getIdToken();
});
after(async () => {
await Student.deleteMany({});
await mongoose.disconnect();
await server.close();
});
it('should return 200 if the token is valid', async () => {
const res = await request(server)
.get('/students/me')
.set('Authorization', 'Bearer ' + token);
expect(res.status).to.be.equal(200);
});
});
在从数据库中删除时,在钩子中超时,而在获取用户信息时,在students / me端点中超时。
编辑:我也尝试增加超时时间,但这不起作用。
答案 0 :(得分:0)
我通过创建一个testSetup文件解决了我的问题。如果挂钩不在描述块中,则将其视为根挂钩(mocha docs)。因此,在此testSetup中,我放置了一个before()和after()钩子,我需要运行服务器并在before钩子中设置数据库并导出服务器的index.js(以便可以在实际中使用它。测试文件)。之后,我关闭了服务器和数据库连接。现在似乎可以正常工作,如果有更好的方法,或者我的初始代码或此代码有缺陷,请告诉我。