
- ReactJS 教程
- ReactJS - 首頁
- ReactJS - 簡介
- ReactJS - 路線圖
- ReactJS - 安裝
- ReactJS - 特性
- ReactJS - 優點與缺點
- ReactJS - 架構
- ReactJS - 建立 React 應用
- ReactJS - JSX
- ReactJS - 元件
- ReactJS - 巢狀元件
- ReactJS - 使用新建立的元件
- ReactJS - 元件集合
- ReactJS - 樣式
- ReactJS - 屬性 (props)
- ReactJS - 使用屬性建立元件
- ReactJS - props 驗證
- ReactJS - 建構函式
- ReactJS - 元件生命週期
- ReactJS - 事件管理
- ReactJS - 建立一個事件感知元件
- ReactJS - 在 Expense Manager 應用中引入事件
- ReactJS - 狀態管理
- ReactJS - 狀態管理 API
- ReactJS - 無狀態元件
- ReactJS - 使用 React Hooks 進行狀態管理
- ReactJS - 使用 React Hooks 的元件生命週期
- ReactJS - 佈局元件
- ReactJS - 分頁
- ReactJS - Material UI
- ReactJS - Http 客戶端程式設計
- ReactJS - 表單程式設計
- ReactJS - 受控元件
- ReactJS - 非受控元件
- ReactJS - Formik
- ReactJS - 條件渲染
- ReactJS - 列表
- ReactJS - Keys
- ReactJS - 路由
- ReactJS - Redux
- ReactJS - 動畫
- ReactJS - Bootstrap
- ReactJS - Map
- ReactJS - 表格
- ReactJS - 使用 Flux 管理狀態
- ReactJS - 測試
- ReactJS - CLI 命令
- ReactJS - 構建和部署
- ReactJS - 示例
- Hooks
- ReactJS - Hooks 簡介
- ReactJS - 使用 useState
- ReactJS - 使用 useEffect
- ReactJS - 使用 useContext
- ReactJS - 使用 useRef
- ReactJS - 使用 useReducer
- ReactJS - 使用 useCallback
- ReactJS - 使用 useMemo
- ReactJS - 自定義 Hooks
- ReactJS 高階
- ReactJS - 可訪問性
- ReactJS - 程式碼分割
- ReactJS - Context
- ReactJS - 錯誤邊界
- ReactJS - 轉發 Refs
- ReactJS - Fragments
- ReactJS - 高階元件
- ReactJS - 與其他庫整合
- ReactJS - 效能最佳化
- ReactJS - Profiler API
- ReactJS - Portals
- ReactJS - 無 ES6 ECMAScript 的 React
- ReactJS - 無 JSX 的 React
- ReactJS - 調和
- ReactJS - Refs 和 DOM
- ReactJS - Render Props
- ReactJS - 靜態型別檢查
- ReactJS - Strict Mode
- ReactJS - Web Components
- 附加概念
- ReactJS - 日期選擇器
- ReactJS - Helmet
- ReactJS - 內聯樣式
- ReactJS - PropTypes
- ReactJS - BrowserRouter
- ReactJS - DOM
- ReactJS - 走馬燈
- ReactJS - 圖示
- ReactJS - 表單元件
- ReactJS - 參考 API
- ReactJS 有用資源
- ReactJS - 快速指南
- ReactJS - 有用資源
- ReactJS - 討論
ReactJS - 測試
測試是確保任何應用程式中建立的功能是否符合業務邏輯和編碼規範的過程之一。React 建議使用 React 測試庫 來測試 React 元件,並使用 jest 測試執行器來執行測試。react-testing-library 允許隔離檢查元件。
可以使用以下命令在應用程式中安裝它:
npm install --save @testing-library/react @testing-library/jest-dom
建立 React 應用
建立 React 應用 預設配置了 React 測試庫 和 jest 測試執行器。因此,測試使用 建立 React 應用 建立的 React 應用程式只需一個命令即可。
cd /go/to/react/application npm test
npm test 命令類似於 npm build 命令。兩者都會在開發者更改程式碼時重新編譯。一旦在命令提示符中執行該命令,它就會發出以下問題。
No tests found related to files changed since last commit. Press `a` to run all tests, or run Jest with `--watchAll`. Watch Usage › Press a to run all tests. › Press f to run only failed tests. › Press q to quit watch mode. › Press p to filter by a filename regex pattern. › Press t to filter by a test name regex pattern. › Press Enter to trigger a test run.
按下 a 將嘗試執行所有測試指令碼,最後總結結果,如下所示:
Test Suites: 1 passed, 1 total Tests: 1 passed, 1 total Snapshots: 0 total Time: 4.312 s, estimated 12 s Ran all test suites. Watch Usage: Press w to show more.
在自定義應用程式中進行測試
在本節中,讓我們使用 Rollup 捆綁器 編寫一個自定義 React 應用程式,並使用 React 測試庫 和 jest 測試執行器對其進行測試。
首先,按照“建立 React 應用”章節中的說明,使用 Rollup 捆綁器建立一個新的 React 應用程式 react-test-app。
接下來,安裝測試庫。
cd /go/to/react-test-app npm install --save @testing-library/react @testing-library/jest-dom
接下來,在您喜歡的編輯器中開啟應用程式。
接下來,在 src/components 資料夾下建立一個檔案 HelloWorld.test.js 來編寫 HelloWorld 元件的測試並開始編輯。
接下來,匯入 React 庫。
import React from 'react';
接下來,匯入測試庫。
import { render, screen } from '@testing-library/react'; import '@testing-library/jest-dom';
接下來,匯入我們的 HelloWorld 元件。
import HelloWorld from './HelloWorld';
接下來,編寫一個測試來檢查文件中是否存在 Hello World 文字。
test('test scenario 1', () => { render(<HelloWorld />); const element = screen.getByText(/Hello World/i); expect(element).toBeInTheDocument(); });
完整的測試程式碼如下:
import React from 'react'; import { render, screen } from '@testing-library/react'; import '@testing-library/jest-dom'; import HelloWorld from './HelloWorld'; test('test scenario 1', () => { render(<HelloWorld />); const element = screen.getByText(/Hello World/i); expect(element).toBeInTheDocument(); });
接下來,如果系統中尚未安裝 jest 測試執行器,請安裝它。
npm install jest -g
接下來,在應用程式的根資料夾中執行 jest 命令。
jest
接下來,在應用程式的根資料夾中執行 jest 命令。
PASS src/components/HelloWorld.test.js √ test scenario 1 (29 ms) Test Suites: 1 passed, 1 total Tests: 1 passed, 1 total Snapshots: 0 total Time: 5.148 s Ran all test suites.