0
我想測試兩臺路由器,首先生成驗證碼,並保存在req.session.code中,第二次檢查代碼。 路由器:摩卡測試路由,req.session.code未定義
`router.post('/code', (req, res) = > {
let text = generateCode();
req.session.code = text;
res.json({message: text});
})`
`router.post('/check_code' , (req, res) => {
let c = req.body.code;
console.log(c, req.session.code) //when test, req.session.code is undefined
if (c.toUpperCase() !== req.session.code.toUpperCase()) {
return res.json('error');
}
return res.json('ok');
})`
然後,我使用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,但它沒有工作。那麼當一些值保持在會話中時,我應該如何測試路由器?我還沒有找到同樣的問題。
謝謝!它真的是不同的代理問題。 – Borkes