[英]Supertest unit test timing out when controller sets session data
我正在尝试对我的应用程序运行单元测试,但单元测试超时。 当我深入研究它时,我发现它在应用程序试图设置会话数据的地方超时。 如果我删除会话设置代码行,单元测试将继续(但由于需要会话数据而失败)。
// unit test code;
describe('Check if endpoint are reachable', () => {
before(function(done) {
// call /router to generate session;
AGENT.get('/router')
.query(clientData)
.expect(302)
.end((err, res) => {
if (!err) {
done()
} else {
done(err);
}
});
});
// .......
});
// controller code where the session is set;
// .....
req.session.clientData = clientData;
// ....
当我运行代码时,出现以下错误:错误:超过 2000 毫秒超时。 对于异步测试和钩子,确保调用“done()”; 如果返回 Promise,请确保它已解决。 (C:\\Nedbank\\aa-serverui\\application\\tests\\authorise.js)
但是,如果我注释掉会话设置行 ( // req.session.clientData = clientData; ),那么测试将继续按预期运行。
这是一个最小的工作示例:
app.js
:
const express = require("express");
const session = require("express-session");
const app = express();
app.use(
session({
secret: "keyboard cat",
resave: false,
saveUninitialized: true,
cookie: { secure: true },
}),
);
function controller(req, res) {
const clientData = req.query;
console.log(clientData);
req.session.clientData = clientData;
res.sendStatus(302);
}
app.get("/router", controller);
app.get("/api", (req, res) => {
res.sendStatus(200);
});
module.exports = app;
app.test.js
:
const supertest = require("supertest");
const app = require("./app");
const agent = supertest(app);
const { expect } = require("chai");
describe("Check if endpoint are reachable", () => {
const clientData = { name: "supertest" };
before((done) => {
agent
.get("/router")
.query(clientData)
.expect(302)
.end((err, res) => {
if (!err) {
done();
} else {
done(err);
}
});
});
it("should pass", async () => {
const res = await agent.get("/api");
expect(res.status).to.be.eq(200);
});
});
带有覆盖率报告的集成测试结果:
Check if endpoint are reachable
{ name: 'supertest' }
✓ should pass
1 passing (44ms)
-------------|----------|----------|----------|----------|-------------------|
File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s |
-------------|----------|----------|----------|----------|-------------------|
All files | 96.15 | 50 | 100 | 96.15 | |
app.js | 100 | 100 | 100 | 100 | |
app.test.js | 92.86 | 50 | 100 | 92.86 | 17 |
-------------|----------|----------|----------|----------|-------------------|
源代码: https : //github.com/mrdulin/mocha-chai-sinon-codelab/tree/master/src/stackoverflow/56526009
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.