【发布时间】:2019-09-09 06:37:07
【问题描述】:
使用 Mocha/Chai 进行 REST API 单元测试,我需要能够为一些端点模拟 req.session.someKey。我该如何去嘲笑req.session?
我正在为使用 express-session 的 NodeJS Express 应用程序编写 REST API 单元测试。其中一些端点需要使用存储在req.session.someKey 中的数据,如果req.session.someKey 未定义,则端点设置为返回400,因此我需要能够模拟它才能成功完成测试。
示例代码:
router.get('/api/fileSystems', utilities.apiAuth, (req, res) => {
let customer = req.session.customer;
let route = (customer === 'NONE') ? undefined : customer;
if(route == undefined){
res.status(400).send('Can't have customer of undefined');
} else {
let requestOptions = setRequestOptions(route);
queryFileSystemInfo(requestOptions, (info) => {
res.status(200).send(info);
});
}
});
我尝试过的:
describe('/GET /api/fileSystems', () => {
it('It should return information about the filesystem for a customer'), (done) => {
chai.request(server)
.get('api/fileSystems')
.set('customer', '146')
.end((err, res) => {
res.should.have.status(200);
done();
});
});
});
我尝试使用 .set() 来设置 req.session 但我相信 .set 只是设置标题,所以我不相信我可以这样更新它,除非我遗漏了什么。
【问题讨论】:
-
为什么要使用 chai.request?只是模拟控制器
标签: node.js express mocha.js chai chai-http