超级会话未获取会话数据

时间:2019-03-06 15:24:42

标签: node.js express mocha supertest

我目前正在尝试为我使用node.js构建并表达的API编写一些单元测试。我正在使用express-session为用户创建会话数据,成功登录后,会将用户的ID插入到会话数据中。这样,当他们从API发出另一个请求时,我可以检查会话是否包含ID,如果不是,则显然用户未登录,因此返回401状态。

我想测试我的登出路线:

app.get("/logout",(req,res)=>{
  if(req.session.UserID){
       req.session.destroy((err) => {
         console.error(err)
       })
       res.status(200).send("logged out")
  }else{
    res.status(401).send("not logged in ")
  }
})

我一直在使用supertest-session,按照他们在npm页面上进行的测试来测试这条路线,以下是我到目前为止的结果:

var session = require('supertest-session');
var app = require('../app')

var testSession = null;

beforeEach(function () {
  testSession = session(app);
});


describe("/logout",()=>{
  var authenticatedSession;

    beforeEach(function (done) {
      testSession.post('/login')
        .send({email:"roman@mail.com", password:"secet"})
        .expect(200)
        .end(function (err) {
          if (err) return done(err);
          authenticatedSession = testSession;
          console.log(authenticatedSession.session)
          return done();
        });
    });
    it("Deletes the users session from session storage",(done)=>{
        authenticatedSession.get("/logout")
        .expect(200)
        .expect("logged out",done)
    })
})

但是,我收到一个错误代码,表示它应该为200,但它得到的是401,这表示该用户尚未登录,我尝试登录authenticatedSession,但其中不包含来自登录名的数据beforeEach()功能。我对使用超级测试(刚从今天开始)很陌生,希望对您有所帮助!

0 个答案:

没有答案