JVi*_*lla 3 session request mocha.js chai
使用两个嵌套的chai请求时,会话丢失.
chai.request(server)
.post('/api/v1/account/login')
.send({_email: 'test@test.com', _password: 'testtest'})
.end(function(err, res){
chai.request(server)
.get('/api/v1/user/me')
.end(function(err2, res2){
//here i should get the session, but its empty
res2.should.have.status(200);
done();
});
});
Run Code Online (Sandbox Code Playgroud)
而且我很确定这是我的mocha测试中的一个错误,因为我在测试之外尝试了它(登录然后检索会话)并且正在设置会话.
表达自己没有任何原生会话支持.我猜你正在使用一些会话中间件,如https://github.com/expressjs/session.
同时,我猜您正在使用chai-http插件发送HTTP请求.在chai-http中,为了在不同的HTTP请求之间保留cookie(以便req.session可以在快递方面使用),你需要使用chai.request.agent而不是chai.
以下是代码的简单示例:
var agent = chai.request.agent(app);
agent.post('/api/v1/account/login')
.send({_email: 'test@test.com', _password: 'testtest'})
.then(function(res){
agent.get('/api/v1/user/me')
.then(function(res2){
// should get status 200, which indicates req.session existence.
res2.should.have.status(200);
done();
});
});
Run Code Online (Sandbox Code Playgroud)
对于chai.request.agent,你可以参考http://chaijs.com/plugins/chai-http/#retaining-cookies-with-each-request