我试图在supertest中将cookie会话设置为post请求,但我不能。这是我的测试代码:
const app = express();
app.set("trust proxy", true);
app.use(json());
app.use(
cookieSession({
signed: false,
secure: process.env.NODE_ENV !== "test",
})
);
it("this is a test", async () => {
const response = await request(app)
.post("/api/users/current")
.set("Cookie", [
'express:sess=eyJqd3QiOiJleUpoYkdjaU9pSklVekkxTmlJc0luUjVjQ0k2SWtwWFZDSjkuZXlKcFpDSTZJakV5TXpRaUxDSmxiV0ZwYkNJNkluUmxjM1JBZEdWemRDNWpiMjBpTENKcFlYUWlPakUyTkRZeE5qazVNREI5LjZybE8zODB2RG1PN0J4cFlhRERZSnBScmhrMEc2X3pvN3BBd2MxYU5rMVEifQ=='
])
.send({});
expect(response.get("Set-Cookie")).toBeDefined();
});
由于response.get("Set-Cookie")
未定义,此测试失败。
发布于 2022-09-14 09:23:00
新版本的cookie-session
将要求会话以关键字session
开头。
"session=eyJqd3QiOiJ..."
相对于express:sess
"express:sess=eyJqd3QiOiJ..."
帮助我的另一件事是agent
的使用。我是根据超测试文档做的。
import express from 'express';
import request from 'supertest';
const app = express();
const agent = request.agent(app); // <-- Important
const response = agent // <-- Request through agent
.post('/api/users/current')
.set('Cookie', [
'session=eyJqd3QiOiJ...', // <-- No 'express:sess' (Cropped for demo)
])
.send({});
发布于 2022-04-25 13:15:17
根据我的调查,超级测试库不稳定。大多数开发人员在测试期间很难设置或检索cookie。
您可以查看以下链接:如何设置签名的cookie
https://stackoverflow.com/questions/71314834
复制相似问题