【问题标题】:Set session in Request for node js unit test在请求节点js单元测试中设置会话
【发布时间】:2018-09-02 11:15:22
【问题描述】:

我有一条路线.route(myapp/profile) .get(myProfileMiddleware.checkAccessToken(), myProfileController.getProfile )

这里是中间件方法

检查访问令牌

检查会话令牌是否设置如下。

checkAccessToken() { 
return (req, rex, next) => {      
  if (!req.session || !req.session.accessToken) {
   // throws 403 Forbidden error
  }
  // Executes next() method      
}}

如果访问令牌存在,则路由执行相应的控制器方法myProfileController.getProfile,否则抛出403禁止错误。

我需要为此路线编写单元测试。我正在使用 mocha、chai、sinon 和 supertest。 我尝试使用“express-session”在请求方法中设置会话变量,如下所示

app.use(session({accessToken: 'ssshhhhh'}));

也试过set('cookie', ['accessToken=sssh'],但没用。会话令牌没有设置,路由显示403 Forbidden错误

有人可以为此提供有效的解决方案吗?提前致谢。

我正在使用以下版本:

Node : 8.7, chai: ^4.1.0, mocha: ^5.0.4, node-mocks-http: ^1.6.6, sinon:^2.3.2 超测:^3.0.0

【问题讨论】:

    标签: node.js mocha.js sinon chai supertest


    【解决方案1】:

    我不确定我是否完全理解您的问题,但是当我使用 node-mocks-http 时,我会在测试文件中创建 mockedRequest 时设置会话。

    const mockRequest = httpMocks.createRequest({
      session: { … }
    });
    

    然后允许实际的路由处理程序设置会话属性。

    请参阅the docs 关于.createRequest() 并注意session 选项。

    【讨论】:

      猜你喜欢
      • 2020-07-04
      • 1970-01-01
      • 2017-06-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-17
      • 2017-11-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多