在Node Express中,req和res对象是否可以全局访问?

时间:2013-05-17 07:30:40

标签: node.js express supertest superagent

req.session.username = user.username;

我正在使用supertest测试路由处理。在我的登录处理代码中,如果用户成功登录,我有以下内容 -

req.session.username = user.username;

但是在supertest回调函数中,我无法访问req对象。

request(app)
          .post('/login')
          .send({username: 'dummy_username', password: 'valid_password'})
          .end(function(err, res){
            if (err) { return done(err); }
            expect(err).toBe(null);
            expect(res.status).toEqual(200);
            done();
          });

我想添加类似expect(req.session.username).toBe('dummy_username')之类的内容,但显然我无法在无法使用req时执行此操作。那么有一种引用req对象的方法吗?

1 个答案:

答案 0 :(得分:1)

Supertest仅用于测试响应,因为测试请求(及其服务器端操作)将测试实现细节而不是行为。 supertest不适合这份工作。您可以为某些服务器端函数编写纯单元测试,或者您可以让/login路由在响应正文中包含用户的信息(这是典型的),并且具有超级验证信息与请求中的信息匹配