Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 摩卡测试路线,req.session.code未定义_Node.js_Session_Mocha.js - Fatal编程技术网

Node.js 摩卡测试路线,req.session.code未定义

Node.js 摩卡测试路线,req.session.code未定义,node.js,session,mocha.js,Node.js,Session,Mocha.js,我想测试两个路由器,首先生成一个验证码,并保存在req.session.code中,然后检查代码。 路由器: 然后,我使用supertest和mocha测试 `describe('test', function() { let code; //check code as body it('get verification code', function(done) { request.agent(app) .post('/code') .ex

我想测试两个路由器,首先生成一个验证码,并保存在req.session.code中,然后检查代码。 路由器:

然后,我使用
supertest
mocha
测试

`describe('test', function() {
   let code; //check code as body
   it('get verification code', function(done) {
     request.agent(app)
        .post('/code')
        .expect(200)
        .end(function(err, res){
         if (err) return done(err);
         code = res.body.message;
          done();
      })
   })
   it('check verification code', function(done) {
     request.agent(app)
        .post('/check_code')
        .send({code: code}) 
        .expect(200)
        .end(function(err, res){
         if (err) return done(err);
         code = res.body.message;
          done();
      })
   })
})`
第一次通过,第二次失败,我用邮递员手动测试,成功了,我打印了req.session:

`session {
  cookie:
   {path: '/',
    _expires:null,
    originalMaxAge: null,
    httpOnly: true
   },
   code: xxxx  //there is code when use postMan,but not in mocha
}`

我在代码中使用了.agent,但它不起作用。那个么,当一些值保持在会话中时,我应该如何测试路由器呢?我还没有找到相同的问题。

您正在为每个测试创建一个新的代理,但是如果您希望代理正确支持cookies,则需要在整个测试中使用一个代理(因为代理在内部存储收到的cookies,随后使用同一代理发出的请求将使用这些cookies):

`session {
  cookie:
   {path: '/',
    _expires:null,
    originalMaxAge: null,
    httpOnly: true
   },
   code: xxxx  //there is code when use postMan,but not in mocha
}`
describe('test', function() {
   let agent = request.agent(app);
   let code; //check code as body

   it('get verification code', function(done) {
     agent.post('/code')...
   });

   it('check verification code', function(done) {
     agent.post('/code')...
   });

});