Kha*_*led 5 javascript unit-testing node.js supertest jestjs
我试图在超级测试中将 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();
});
Run Code Online (Sandbox Code Playgroud)
这个测试失败了,因为response.get("Set-Cookie")未定义
新版本cookie-session将要求会话以关键字开头session:
"session=eyJqd3QiOiJ..."
Run Code Online (Sandbox Code Playgroud)
与以下相反express:sess:
"express:sess=eyJqd3QiOiJ..."
Run Code Online (Sandbox Code Playgroud)
另一件对我有帮助的事情是使用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({});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6588 次 |
| 最近记录: |