在请求节点 js 单元测试中设置会话



我有一条路线.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 禁止错误。

我需要为此路由编写单元测试。我正在使用摩卡,柴,西农和超级测试。我尝试使用"快速会话"在请求方法中设置会话变量,如下所示

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

还尝试了set('cookie',['accessToken=sssh'],但没有工作。未设置会话令牌,路由显示错误403 Forbidden

有人可以为此找到可行的解决方案吗?提前谢谢。

我正在使用以下版本:

节点 : 8.7, chai: ^4.1.0, mocha: ^5.0.4, node-mocks-http: ^1.6.6, sinon:^2.3.2超级测试: ^3.0.0

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

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

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

请参阅有关.createRequest()的文档,并注意session选项。

最新更新