繁体   English   中英

如何在 expressJS 中测试全局中间件?

[英]How to test global middlware in expressJS?

这似乎是一个简单的问题,但我很难过。 如何测试我的 expressjs 中间件是否正确设置了用户 session?

app.use((req:Req, res:Response, next:NextFunction) => {
  req.userSessionId = uuid();
  next();
});

我不确定如何测试是否正在捕获传入请求并正确设置 userSessionId。 我想要类似的东西

describe('setting up middleware', ()=> {
 //instantiate the app
 expect(app.use).tobeCalled();
 expect(mockReq).toBeSetWith(userSessionId)

});

您可以将中间件代码重构为 function,并编写测试此 function 逻辑的单元测试。

在我( 和其他人)看来,您的单元测试应该只测试您的代码并避免测试 Express 逻辑(调用您的中间件)。 为此,您应该进行集成测试,以测试您的应用程序作为一个整体是否正常工作

// This middleware code needs to be tested
const userSessionMiddleare = (req: Request, res:Response, next: NextFunction) => {
  req.userSessionId = uuid();
  next();
};

// This Express logic should not be unit-tested but rather tested in your integration testing
app.use(userSessionMiddleare);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM