摩卡柴请求和快递会议

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测试中的一个错误,因为我在测试之外尝试了它(登录然后检索会话)并且正在设置会话.

sha*_*ncs 7

表达自己没有任何原生会话支持.我猜你正在使用一些会话中间件,如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