測試
運行和擴展 Minara 測試套件
Minara 使用 Vitest。測試套件覆蓋快速邏輯、本地集成行為和端到端流程,不需要生產憑據。
測試層級
apps/agent/tests/
├── unit/ # 聚焦逻辑和安全行为
├── integration/ # 本地服务、SQLite、CLI 和网关边界
├── e2e/ # 完整的用户和 Agent 流程
├── fakes/ # 确定性的模型、服务和测试运行时
├── helpers/ # 共享 fixture 和断言
└── setup.ts # 独立临时数据目录和 SQLite 数据库選擇能證明行為的最窄層級。單元測試是默認選擇。需要真實本地邊界時使用集成測試,需要完整流程或公共接口覆蓋時使用 E2E 測試。
運行測試
在倉庫根目錄運行:
pnpm test:unit
pnpm test:e2e
pnpm --filter @minara/agent test:integration運行單個包或監聽循環:
pnpm --filter @minara/agent test:unit
pnpm --filter @minara/agent test:watch
pnpm --filter @minara/agent exec vitest run tests/unit/core/tool-registry.test.ts先運行聚焦測試,再在提交前運行受影響的更廣層級。
使用真實的本地邊界測試
tests/setup.ts 會為每項測試創建獨立臨時數據目錄和 SQLite 數據庫,並在每次測試前清除主要憑據。這樣可以測試持久化和註冊表,而不會讀取開發者的賬戶或本地狀態。
請使用共享 fake,而不是在單個測試中散落網絡 mock:
createMockLanguageModel提供腳本化模型響應並記錄請求。mock-minara-server提供本地兼容的 Minara HTTP 接口。buildTestRuntime創建只包含測試所需依賴的AgentRuntime。
新增安全 hook、能力工廠、技能和路由規則都應有聚焦覆蓋。Agent loop 改動應使用真實註冊表和確定性模型輸出編寫集成或 E2E 測試。
網絡 canary 需要顯式開啟
CI 不使用生產憑據。大部分測試採用 fake、fixture 和本地服務。
部分上游兼容性檢查存在,但只有顯式開啟後才運行。例如,外部技能檢查需要 MINARA_INTEGRATION_NETWORK=1;FMP 和 DefiLlama canary 還需要各自的 E2E_*_LIVE=1 標誌和 API key。這些檢查驗證上游響應結構,不屬於日常測試循環。
不要將真實憑據寫入測試、快照或 CI 日誌。不要在提交中留下 test.only。
CI 要求
CI 會按 lockfile 安裝依賴,構建共享包,運行類型檢查和目標測試套件,併為依賴瀏覽器的測試安裝 Chromium。瀏覽器測試在本地失敗時,可能是缺少 Playwright Chromium:
pnpm --filter @minara/agent exec playwright install chromium修改文檔時,還應運行文檔貢獻指南中列出的本地化和構建檢查。