supertest如何设置session和cookie?
我看文档设置cookie 是这么写的
var request = require('supertest')
, should = require('should')
, express = require('express')
, cookieParser = require('cookie-parser');
describe('request.agent(app)', function(){
var app = express();
app.use(cookieParser());
app.get('/', function(req, res){
res.cookie('cookie', 'hey');
res.send();
});
app.get('/return', function(req, res){
if (req.cookies.cookie) res.send(req.cookies.cookie);
else res.send(':(')
});
var agent = request.agent(app);
it('should save cookies', function(done){
agent
.get('/')
.expect('set-cookie', 'cookie=hey; Path=/', done);
})
it('should send cookies', function(done){
agent
.get('/return')
.expect('hey', done);
})
})
这里的
expect('set-cookie', 'cookie=hey; Path=/', done)
'set-cookie'是指操作,然后'cookie=hey; Path=/'这个是cookie值的样子,但是我看api,并没有这种说明,也同样没有说能获取
expect('hey', done);
cookie值的说明
https://github.com/visionmedia/supertest#api
那么session又该如何设置呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
cookie
的hey
是在这里设置的:expect('hey', done);
这个断言之所以能成功是因为,按照你测试用例的书写顺序,肯定先跑过了前一个should save cookies
的case,那cookie
就设置成功了,然后再跑第二个case的时候,服务端部分:至于如何设置
session
,你首先需要一个相应的中间件session补充:
supertest对断言的部分描述的还是相对比较清晰的:
还有“我不知道supertest能不能直接对cookie和session进行操作”,当然不是,我就看了一眼你的测试用例,就发现
supertest
其实是个模拟客户端发请求的工具,既然是客户端,当然不能设置session
。session
是后端处理的,所以我才说是你的后端部分需要增加中间件处理。(关于session
是什么,仍然是基础,这个不是问题,我就算给你说个1000字,也不见得能说的完全清楚,你更不见的有兴趣读完。基础是必须的,群里没有一个“大牛”是基础不存在的情况下,突然成神的)关于
session
,前几天刚好回答过一个express-session和passportjs各自都做了哪些事情实现了自动登录?先定义好session
var session = {
"name":"jack"
}
其次,直接set()方法设置header(前提是在app.js里面已经设置好,
比如:let ticket = req.headers['ticket'];
session = JSON.parse(ticket);
req.session = session;)
然后,接下来在测试代码set了,最后开启vscode进行调试
一下是部分代码
describe('/xx', function() {