NodeJS超级访问会话对象

时间:2013-11-26 09:55:43

标签: javascript node.js session mocha supertest

我正在使用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对象?

2 个答案:

答案 0 :(得分:9)

这个新的lib应该可以解决这个问题:

您可能还要查看属于superagentsupertest。这是一个很好的教程:

不想要另一个lib?试试这个...

答案 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);

所有路线都会在匹配之前进行身份验证!