【发布时间】:2020-10-26 18:15:00
【问题描述】:
我已经解决这个问题好几天了,但我找不到任何解决方案。
对于路由类中的每个函数,我都有这 2 个中间件
index.js
const browser = require('browser-detect');
const detectBrowser = (req,res,next) => {
const result = browser(req.headers['user-agent']);
console.log(result);
if (result) {
if (result.name === 'chrome') {
console.log('Browser: '+result.name+ ' OK!');
next();
} else if (result.name=== 'firefox') {
console.log('Browser: '+result.name+ ' OK!');
next();
} else {
res.render('browser-response');
}
}
};
const redirectHome = (req,res,next) => {
if(req.session.token && req.session.firstName && req.session.lastName) {
if (!req.session.checked) {
res.redirect('/term-of-service');
}
else {
res.redirect('/index');
}
} else {
next();
}
};
我想测试的一个简单功能是:
router.get('/', detectBrowser, redirectHome, (req, res) => {
res.render("login");
});
我打算使用 Mocha 和 Supertest 作为框架来测试router.get(/) 函数,但无论如何都找不到模拟浏览器和会话变量(session.token、session.firstName、session.lastName、session.检查)。
有人知道吗?
提前谢谢你。
【问题讨论】:
标签: javascript node.js unit-testing express middleware