我试图在超级测试中设置一个cookie,但它不起作用



我试图在supertest中为post请求设置cookie会话,但我做不到。这是我的测试代码:

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();
});

并且该测试失败,因为CCD_ 1是未定义的

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({});

根据我的调查,Supertest库并不稳定。大多数开发人员在测试期间难以设置或检索cookie。

您可以查看此链接:如何设置签名cookie

最新更新