@@ -371,7 +371,62 @@ bun test --watch
371371
372372** 关键约束** :` mock.module() ` 必须在每个测试文件中内联调用,不能从共享 helper 导入(Bun 在 mock 生效前就解析了 helper 的导入)。
373373
374- ## 12. 参考
374+ ## 12. 后续测试覆盖计划
375+
376+ > 目标:再增加 ~ 200 tests,从 647 → ~ 860 tests / 52 files
377+
378+ ### Phase 1:纯函数(零依赖,~ 98 tests,8 files)
379+
380+ | 测试文件 | 源文件 | 关键函数 | 预估 |
381+ | ----------| --------| ----------| ------|
382+ | ` errors.test.ts ` | ` src/utils/errors.ts ` | ` isAbortError ` , ` toError ` , ` errorMessage ` , ` getErrnoCode ` , ` isENOENT ` , ` isFsInaccessible ` , ` classifyAxiosError ` + Error classes | 20 |
383+ | ` shellRuleMatching.test.ts ` | ` src/utils/permissions/shellRuleMatching.ts ` | ` permissionRuleExtractPrefix ` , ` hasWildcards ` , ` matchWildcardPattern ` , ` parsePermissionRule ` , ` suggestionForExactCommand ` | 20 |
384+ | ` argumentSubstitution.test.ts ` | ` src/utils/argumentSubstitution.ts ` | ` parseArguments ` , ` parseArgumentNames ` , ` generateProgressiveArgumentHint ` , ` substituteArguments ` | 15 |
385+ | ` CircularBuffer.test.ts ` | ` src/utils/CircularBuffer.ts ` | ` CircularBuffer ` class 全部方法 | 12 |
386+ | ` sanitization.test.ts ` | ` src/utils/sanitization.ts ` | ` partiallySanitizeUnicode ` , ` recursivelySanitizeUnicode ` | 10 |
387+ | ` slashCommandParsing.test.ts ` | ` src/utils/slashCommandParsing.ts ` | ` parseSlashCommand ` | 8 |
388+ | ` contentArray.test.ts ` | ` src/utils/contentArray.ts ` | ` insertBlockAfterToolResults ` | 8 |
389+ | ` objectGroupBy.test.ts ` | ` src/utils/objectGroupBy.ts ` | ` objectGroupBy ` | 5 |
390+
391+ ### Phase 2:轻 Mock(mock log.ts / env,~ 63 tests,6 files)
392+
393+ | 测试文件 | 源文件 | Mock 策略 | 预估 |
394+ | ----------| --------| -----------| ------|
395+ | ` envUtils.test.ts ` | ` src/utils/envUtils.ts ` | 临时修改 ` process.env ` | 15 |
396+ | ` sleep.test.ts ` | ` src/utils/sleep.ts ` + ` sequential.ts ` | AbortController | 14 |
397+ | ` memoize.test.ts ` | ` src/utils/memoize.ts ` | mock ` log.ts ` + ` slowOperations.ts ` | 12 |
398+ | ` groupToolUses.test.ts ` | ` src/utils/groupToolUses.ts ` | 构造 mock message/tool 对象 | 12 |
399+ | ` dangerousPatterns.test.ts ` | ` src/utils/permissions/dangerousPatterns.ts ` | 无(常量导出) | 5 |
400+ | ` outputLimits.test.ts ` | ` src/utils/shell/outputLimits.ts ` | 临时修改 ` process.env ` | 5 |
401+
402+ ### Phase 3:补全现有计划缺口(~ 20 tests,3 files)
403+
404+ | 测试文件 | 源文件 | Mock 策略 | 预估 |
405+ | ----------| --------| -----------| ------|
406+ | ` context.test.ts ` | ` src/context.ts ` | mock ` execFileNoThrow ` , ` log.ts ` | 10 |
407+ | ` zodToJsonSchema.test.ts ` | ` src/utils/zodToJsonSchema.ts ` | 无(仅依赖 zod) | 5 |
408+ | ` PermissionMode.test.ts ` | ` src/utils/permissions/PermissionMode.ts ` | 视导出情况 | 5 |
409+
410+ ### Phase 4:工具模块扩展(~ 30 tests,3 files)
411+
412+ | 测试文件 | 源文件 | 预估 |
413+ | ----------| --------| ------|
414+ | ` bashPermissions.test.ts ` | ` src/tools/BashTool/ ` | 10 |
415+ | ` GlobTool.test.ts ` | ` src/tools/GlobTool/ ` | 10 |
416+ | ` mcpStringUtils.test.ts ` | ` src/services/mcp/mcpStringUtils.ts ` | 10 |
417+
418+ ### 不纳入计划的模块
419+
420+ | 模块 | 原因 |
421+ | ------| ------|
422+ | ` query.ts ` / ` QueryEngine.ts ` | 核心循环,需集成测试环境 |
423+ | ` services/api/claude.ts ` | 需 mock SDK 流式响应 |
424+ | ` spawnMultiAgent.ts ` | 50+ 依赖,mock 不可行 |
425+ | ` modelCost.ts ` | 依赖 bootstrap/state + analytics |
426+ | ` mcp/dateTimeParser.ts ` | 调用 Haiku API |
427+ | ` screens/ ` / ` components/ ` | UI 组件,需 Ink 渲染测试 |
428+
429+ ## 13. 参考
375430
376431- [ Bun Test 文档] ( https://bun.sh/docs/cli/test )
377432- 现有测试示例:` src/utils/__tests__/set.test.ts ` , ` src/utils/__tests__/array.test.ts `
0 commit comments