[note] 前端測試的概念與類型
React 本身是基於 JavaScript 的前端框架,因此在實際針對 React 元件進行測試前,需要先暸解在 JavaScript 中常用的測試套件有哪些。另外,測試的種類也非常多,從最大家最常聽到的 Unit Testing、到會整合不同 API 或元件互動的 Integration Testing,最後則是模擬使用者操作的 End to End Testing。
Jest 是 Node-based 的執行器,主要是用來進行元件的單元測試(unit test)而非 DOM 本身,若有需要針對 React 元件進行整合測試,檢驗 DOM 渲染的結果是否 正確,可以使用 react-testing-library。但若是需要的進行更貼近瀏覽器環境的 end-to-end 測試的話,則可以使用 cypress 或 puppeteer。
測試的不同類型
根據不同的測試目的,會分成不同的測試類型,簡單來說可以分成三類,但我認為這三類的區隔並一定壁壘分明的,是其中一種就不會是另一種。不論是哪一類型的測試,概念都是透過「預期結果(expect)」和「真實結果」去做比對,看看得到的真實結果是不是如同開發者所預期的,因此,如果你連預期會是如何都無法想像的話,那是完全沒辦法進行測試的。
單元測試(Unit Test)
測試的對象會是程式碼中最小的單元,通常會是自己撰寫的函式(function)、方法(method)、類別(classes)等等,也就是你預期這個 input 進去後,應該會得到什麼樣的 output。舉例來說,根據 LeetCode 的題目寫出 function 後,LeetCode 就會對你寫的 function 做許多的驗證,確保你寫的 function 在各種情況下都能滿足題目的需求,而針對個別 function 進行測試的情況就是所謂的單元測試(Unit Test)。