測試指南
本文件提供 Rin 專案中測試的完整指南。
概述
Rin 為用戶端與服務端使用不同的測試框架:
- 用戶端:Vitest 搭配 jsdom 環境進行 React 元件測試
- 服務端:Bun 原生測試執行器 搭配記憶體 SQLite 資料庫
執行測試
所有測試
用戶端測試
服務端測試
測試結構
用戶端測試
位置:client/src/**/__tests__/*.test.ts
服務端測試
位置:
- 單元測試:
server/src/**/__tests__/*.test.ts - 整合測試:
server/tests/integration/*.test.ts - 安全測試:
server/tests/security/*.test.ts
撰寫測試
用戶端測試
- 元件測試:單獨測試 React 元件
- API 用戶端測試:測試 HTTP 用戶端與 API 呼叫
- 工具函式測試:測試輔助函式
範例:
服務端測試
- 服務測試:測試服務中的業務邏輯
- 路由測試:測試 API 端點
- 工具函式測試:測試輔助函式
使用資料庫的範例:
測試夾具
服務端測試使用夾具來設定模擬資料:
server/tests/fixtures/index.ts- 模擬資料庫與環境設定server/tests/test-api-client.ts- 用於測試的型別安全 API 用戶端
覆蓋率
用戶端與服務端都支援程式碼覆蓋率報告:
覆蓋率報告產生於:
- 用戶端:
client/coverage/ - 服務端:
server/coverage/
CI/CD 整合
測試在以下情況自動執行:
- 每次推送到
main或develop分支 - 每個 Pull Request
- 部署前(具阻塞性)
詳細資訊請參閱 GitHub Actions 工作流程。
最佳實務
- 為新功能撰寫測試:每個新功能都應該包含測試
- 測試邊界情況:包含錯誤條件與邊界情況的測試
- 使用描述性名稱:測試描述應清楚說明正在測試什麼
- 保持測試獨立:每個測試都應該能夠獨立執行
- 模擬外部相依:為外部 API 與服務使用模擬
疑難排解
用戶端測試失敗
服務端測試失敗
覆蓋率未產生
確認你在測試設定中設定了覆蓋率報告器。