8 個 React 測試庫和實用程序,用於您的下一個開發項目
已發表: 2021-06-22測試不會為您的應用程序添加任何額外的功能,但它會讓您更有信心將應用程序交付到生產環境中。
我想你已經熟悉測試了,你來這裡是為了了解你的 React 應用程序的測試庫。 如果是這種情況,那麼您來對地方了。 在我們研究不同類型的庫之前,讓我們快速了解測試如何影響您的應用程序質量和開發時間。
測試效果
你們中的一些人可能會覺得為應用程序編寫測試是一個耗時的過程。 讓我們暫時跳過這個。 不,為您的應用程序編寫測試並不是一件浪費時間的事情。
假設您開發了一個沒有任何測試的應用程序。 它具有 100 多種功能。 經過相當長的一段時間後,比如 3 個月。 您的客戶希望您在之前開發的 100 個功能中添加 5 個新功能並調整 2 個功能。
您對此沒有任何問題,並完成了所有這些並將您的代碼發送到生產環境(沒有像往常一樣進行測試)。 幾天后,您的客戶再次來找您,說舊功能正在破壞。 你不明白為什麼? 同樣,您花費了大量時間來解決問題。 解決完問題後,你開始失去信心。
如何獲得這種信心?

並節省您花在解決問題上的額外時間。 一件事會做所有的事情,即測試。
假設您已經為您的應用程序編寫了測試。 當您開發新功能或調整舊功能時,您將再次運行測試。 在這種情況下,您將在了解產品本身之前了解這些問題。 它可以節省大量時間,並使您對應用程序的質量充滿信心。
現在,是時候為您的下一個 React 項目研究不同的測試庫了。
測試庫
測試庫是一組幫助您測試 UI 組件的包。 我們的重點是 React 測試庫。
react 測試庫是一個輕量級的庫,包含一整套用於測試 React DOM 的實用程序。 它允許我們在不提供庫的實現細節的情況下測試反應組件。 它通過簡化測試來幫助我們獲得更多的信心。
大多數時候,它與Jest測試庫一起工作。 它提供了簡單的測試方法和實用程序,並指導我們遵循測試的最佳實踐。
反應測試庫的一些功能是:
- 它不關心組件內部狀態的測試。
- 測試組件的渲染結果。
- 測試 DOM 節點而不是類的實例。
- 它提供了一種自定義方式來訪問庫中的 DOM 元素。
- 確保 UI 正常工作。
- 它有大量的社區支持。
笑話
Jest 是一個測試框架,用於測試 JavaScript 和 TypeScript 代碼。 它與前端庫很好地集成在一起。 它由 Facebook 開發和維護。 React 團隊推薦使用它來測試 React 應用程序。

它的下載量比周圍所有其他測試庫最多。 Jest 與 react 測試庫一起,對於 React 測試將更加強大。 大多數開發人員都在使用這種組合進行測試。
Jest 的一些特點是:
- 測試彼此隔離。
- 它提供代碼覆蓋率。
- 它很快。
- 它提供了一種模擬函數的方法。
- 它為測試提供了不同類型的異常。
酶
該酶是用於測試 React 組件的測試實用程序。 它允許我們遍歷並輕鬆操作 React 組件渲染的輸出。 它是由 Airbnb 創建的。
它必須與 jest、mocha、jasmine 等其他測試運行程序一起使用,以測試 React 組件。 它提供了額外且簡單的方法來渲染和測試 React 組件。 它只適用於 React 庫。
摩卡
Mocha 是一個讓測試變得簡單的測試框架。 它在 NodeJS 上運行。 它的測試運行器與其他測試庫一起用於 React 測試。
摩卡的一些特點是:
- 提供測試覆蓋率報告。
- 使用配置文件完全可配置。
- 異步測試超時支持。
- 基於測試的超時。
- 它甚至為您突出顯示緩慢的測試。
Mocha 在其主頁上還有許多其他功能等著您。
業力
Karma 是您的應用程序的測試環境。 它允許我們在真實的瀏覽器和設備(手機、平板電腦和台式機)上運行測試。 它旨在為開發人員提供不同的測試環境。
業力的一些特點是:

- 在真實設備上測試您的代碼。
- 它允許我們在像 PhantomJS 這樣的無頭環境中測試我們的代碼。
- 您可以將 Karma 與Jenkins 、 Travis和Semaphore等 CI/CD 工具集成。
- 您可以輕鬆地將其與其他測試框架(如Mocha 、 Jasmine等)集成。
- 使用 IDE 使調試變得容易。
茉莉花
Jasmine 是 JavaScript 的行為驅動開發 (BDD) 測試框架。 它不需要 DOM 來測試代碼。 Jasmine 是為測試 NodeJS 代碼而設計的。 我們可以使用 Jasmine 和其他測試庫來測試 React。
茉莉花的一些特點是:
- 它具有用於編寫測試的簡潔語法。
- 我們可以為前端和後端編寫測試。
- 茉莉花的核心沒有任何依賴關係,這使得它很快。
柴
Chai 是一個斷言庫。 它可以與任何其他 JavaScript 測試庫配對。 Chai 提供了諸如should 、 assert和except斷言之類的功能。
柏
Cypress 是 JavaScript 端到端測試框架。 它允許我們在瀏覽器中設置、編寫、運行和調試測試。 它有一個儀表板,可為您提供有關您編寫的每個測試狀態的詳細報告。
賽普拉斯在實際的瀏覽器環境中運行測試,您也可以訪問開發工具。 它用於測試應用程序中功能的端到端流程。
賽普拉斯的一些特點是:
- 您可以看到每個步驟的快照。 它在運行測試時拍攝每個步驟的快照。
- 使用 DevTools 使調試變得容易。
- 當您對測試進行類似於 React 實時功能的更改時,賽普拉斯會自動重新運行測試。
- 測試將自動等待輸出而不使用 await 語句。
結論
編寫測試對您和應用程序都有好處。 它使事情在困難時期變得容易。 不要在裡面找藉口。 文章中測試庫的順序並不重要。 這只是為了計數。 沒有圖書館比其他圖書館低。 每個圖書館都有自己的優點和缺點。
我們主要可以使用React 測試庫和Jest來測試 React 應用程序的完整功能。 大多數 React 社區成員都推薦它。 使用這兩個不是強制性的。 如果您是初學者,那麼您可以嘗試一下。 如果您正在為您的 React 應用程序尋找更具體的東西,那麼請瀏覽每個庫。
快樂測試