簡體   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