[筆記] Node.js Express 撰寫單元測試 Unit Test 思路和踩坑記錄

想說用 Node.js 開發一個後端 API 系統給自己接,在單元測試上的撰寫踩了不少陷阱。這邊筆記下必備的思路和出現錯誤訊息的處理方式。
nodejs-typescript-express-api-server


內容

需求

1. 提供給前端網頁一個路由:接收後,會再轉發給最終目標的伺服器獲取資料。接收資料後會進行基本處理,再回傳給前端
2. 前端所傳內容,需要進行基本的驗證

套件

1. Jesthttps://jestjs.io
2. Supertest – https://github.com/ladjs/supertest


思路

1. Controller 和 API 必須要是分離的。所以 Controller 的樣子會像是:

這樣一來,你在進行單元測試時,就可以用 jest 去 mock 這個 api 的回傳結果,與 controller 的其他部分給拆開來

2. jest 的 mockReturnValue 和 mockImplementation 是有差別的。前者會立刻執行,因此你的外部 import 進來的內容就會出現 jest ReferenceError: Cannot access ” before initialization。後者則是被呼叫到時才執行。

3. 使用 supertest 套件要搭配 app.js(ts),請記得 export app

4. jest 的 mockReturnValue 和 mockImplementation 可讓每一次呼叫都有不同的值,可參考這篇


參考資料

1. jest ReferenceError: Cannot access ” before initialization

按讚加入粉絲團