Mocha chai 请求和 express-session
Mocha chai request and express-session
当使用两个嵌套的 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();
});
});
而且我很确定这是我的 mocha 测试中的一个错误,因为我在测试之外尝试了它(登录然后检索会话)并且正在设置会话。
express 本身没有任何原生会话支持。我猜你正在使用一些会话中间件,例如 https://github.com/expressjs/session.
同时,我猜你正在使用 chai-http 插件发送 HTTP 请求。在 chai-http 中,为了在不同的 HTTP 请求之间保留 cookie(以便 req.session 可以在 express 端可用),您需要使用 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();
});
});
chai.request.agent
可以参考http://chaijs.com/plugins/chai-http/#retaining-cookies-with-each-request
当使用两个嵌套的 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();
});
});
而且我很确定这是我的 mocha 测试中的一个错误,因为我在测试之外尝试了它(登录然后检索会话)并且正在设置会话。
express 本身没有任何原生会话支持。我猜你正在使用一些会话中间件,例如 https://github.com/expressjs/session.
同时,我猜你正在使用 chai-http 插件发送 HTTP 请求。在 chai-http 中,为了在不同的 HTTP 请求之间保留 cookie(以便 req.session 可以在 express 端可用),您需要使用 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();
});
});
chai.request.agent
可以参考http://chaijs.com/plugins/chai-http/#retaining-cookies-with-each-request