我正在使用supertest测试我的Node.js应用程序。在我的控制器中,我访问会话对象。为了生成有效请求,需要使用某些数据填充此会话对象。
控制器
// determine whether it is user's own profile or not
var ownProfile = userId == req.session.user._id ? true : false;
测试
it('profile', function (done) {
testUserOne.save(function(error, user){
request
.agent(server)
.get('/profile?userId=' + user._id)
.expect('Content-Type', /html/)
.expect(200)
.expect(/Profile/)
.end(done);
})
});
问题
如何模拟req / session对象?
答案 0 :(得分:9)
答案 1 :(得分:7)
只需使用子应用,并在parent-app上调用authenticated():
var mockApp = express();
mockApp.use(session);
mockApp.all('*', function(req, res, next) {
//authenticated(req, res, next);
//OR
req.session.uid = 'mock uid';
next();
});
mockApp.use(app);
所有路线都会在匹配之前进行身份验证!