mirror of
https://github.com/affaan-m/everything-claude-code.git
synced 2026-04-09 10:53:34 +08:00
fix: harden unicode safety checks
This commit is contained in:
@@ -81,7 +81,7 @@ What would you like to know? (ask your question and I'll answer without losing t
|
||||
```
|
||||
ASIDE: [answer]
|
||||
|
||||
⚠️ Note: This answer suggests [issue] with the current approach. Want to address this before continuing, or proceed as planned?
|
||||
WARNING: Note: This answer suggests [issue] with the current approach. Want to address this before continuing, or proceed as planned?
|
||||
```
|
||||
|
||||
等待用户的决定后再恢复。
|
||||
@@ -128,7 +128,7 @@ That's the short version. Want a deeper explanation after we finish [current tas
|
||||
```
|
||||
ASIDE: [answer]
|
||||
|
||||
📝 Worth fixing: [what should be changed]. I'll flag this after the current task unless you want to address it now.
|
||||
Worth fixing: [what should be changed]. I'll flag this after the current task unless you want to address it now.
|
||||
```
|
||||
|
||||
**问题含糊不清或过于笼统:**
|
||||
@@ -159,7 +159,7 @@ No — the shared cache object in src/cache/store.ts:34 is mutated without locki
|
||||
Under concurrent requests this is a race condition. It's low risk in a single-process
|
||||
Node.js server but would be a real problem with worker threads or clustering.
|
||||
|
||||
⚠️ Note: This could affect the feature we're building. Want to address this now or continue and fix it in a follow-up?
|
||||
WARNING: Note: This could affect the feature we're building. Want to address this now or continue and fix it in a follow-up?
|
||||
```
|
||||
|
||||
***
|
||||
|
||||
@@ -128,7 +128,7 @@ All tests passed.
|
||||
| 已修改的文件 | 2 |
|
||||
| 剩余问题 | 0 |
|
||||
|
||||
构建状态:✅ 成功
|
||||
构建状态:PASS: 成功
|
||||
|
||||
```
|
||||
## 常见错误修复
|
||||
|
||||
@@ -115,16 +115,16 @@ void processUser(const User& user) {
|
||||
* 高:1
|
||||
* 中:0
|
||||
|
||||
建议:❌ 在严重问题修复前阻止合并
|
||||
建议:FAIL: 在严重问题修复前阻止合并
|
||||
|
||||
```
|
||||
## 批准标准
|
||||
|
||||
| 状态 | 条件 |
|
||||
|--------|-----------|
|
||||
| ✅ 批准 | 没有 CRITICAL 或 HIGH 级别的问题 |
|
||||
| ⚠️ 警告 | 仅有 MEDIUM 级别的问题(谨慎合并) |
|
||||
| ❌ 阻止 | 发现 CRITICAL 或 HIGH 级别的问题 |
|
||||
| PASS: 批准 | 没有 CRITICAL 或 HIGH 级别的问题 |
|
||||
| WARNING: 警告 | 仅有 MEDIUM 级别的问题(谨慎合并) |
|
||||
| FAIL: 阻止 | 发现 CRITICAL 或 HIGH 级别的问题 |
|
||||
|
||||
## 与其他命令的集成
|
||||
|
||||
|
||||
@@ -184,7 +184,7 @@ Artifacts generated:
|
||||
╔══════════════════════════════════════════════════════════════╗
|
||||
║ E2E 测试结果 ║
|
||||
╠══════════════════════════════════════════════════════════════╣
|
||||
║ 状态: ✅ 所有测试通过 ║
|
||||
║ 状态: PASS: 所有测试通过 ║
|
||||
║ 总计: 3 项测试 ║
|
||||
║ 通过: 3 (100%) ║
|
||||
║ 失败: 0 ║
|
||||
@@ -193,15 +193,15 @@ Artifacts generated:
|
||||
╚══════════════════════════════════════════════════════════════╝
|
||||
|
||||
产物:
|
||||
📸 截图: 2 个文件
|
||||
📹 视频: 0 个文件(仅在失败时生成)
|
||||
🔍 追踪文件: 0 个文件(仅在失败时生成)
|
||||
📊 HTML 报告: playwright-report/index.html
|
||||
截图: 2 个文件
|
||||
视频: 0 个文件(仅在失败时生成)
|
||||
追踪文件: 0 个文件(仅在失败时生成)
|
||||
HTML 报告: playwright-report/index.html
|
||||
|
||||
查看报告: npx playwright show-report
|
||||
```
|
||||
|
||||
✅ E2E 测试套件已准备好进行 CI/CD 集成!
|
||||
PASS: E2E 测试套件已准备好进行 CI/CD 集成!
|
||||
|
||||
````
|
||||
## 测试产物
|
||||
@@ -238,7 +238,7 @@ open artifacts/search-results.png
|
||||
如果测试间歇性失败:
|
||||
|
||||
```
|
||||
⚠️ FLAKY TEST DETECTED: tests/e2e/markets/trade.spec.ts
|
||||
WARNING: FLAKY TEST DETECTED: tests/e2e/markets/trade.spec.ts
|
||||
|
||||
测试通过了 7/10 次运行 (70% 通过率)
|
||||
|
||||
@@ -258,10 +258,10 @@ open artifacts/search-results.png
|
||||
|
||||
默认情况下,测试在多个浏览器上运行:
|
||||
|
||||
* ✅ Chromium(桌面版 Chrome)
|
||||
* ✅ Firefox(桌面版)
|
||||
* ✅ WebKit(桌面版 Safari)
|
||||
* ✅ 移动版 Chrome(可选)
|
||||
* PASS: Chromium(桌面版 Chrome)
|
||||
* PASS: Firefox(桌面版)
|
||||
* PASS: WebKit(桌面版 Safari)
|
||||
* PASS: 移动版 Chrome(可选)
|
||||
|
||||
在 `playwright.config.ts` 中配置以调整浏览器。
|
||||
|
||||
@@ -289,7 +289,7 @@ open artifacts/search-results.png
|
||||
|
||||
对于 PMX,请优先考虑以下 E2E 测试:
|
||||
|
||||
**🔴 关键(必须始终通过):**
|
||||
**关键(必须始终通过):**
|
||||
|
||||
1. 用户可以连接钱包
|
||||
2. 用户可以浏览市场
|
||||
@@ -299,7 +299,7 @@ open artifacts/search-results.png
|
||||
6. 市场正确结算
|
||||
7. 用户可以提取资金
|
||||
|
||||
**🟡 重要:**
|
||||
**重要:**
|
||||
|
||||
1. 市场创建流程
|
||||
2. 用户资料更新
|
||||
@@ -312,21 +312,21 @@ open artifacts/search-results.png
|
||||
|
||||
**应该:**
|
||||
|
||||
* ✅ 使用页面对象模型以提高可维护性
|
||||
* ✅ 使用 data-testid 属性作为选择器
|
||||
* ✅ 等待 API 响应,而不是使用任意超时
|
||||
* ✅ 测试关键用户旅程的端到端
|
||||
* ✅ 在合并到主分支前运行测试
|
||||
* ✅ 在测试失败时审查工件
|
||||
* PASS: 使用页面对象模型以提高可维护性
|
||||
* PASS: 使用 data-testid 属性作为选择器
|
||||
* PASS: 等待 API 响应,而不是使用任意超时
|
||||
* PASS: 测试关键用户旅程的端到端
|
||||
* PASS: 在合并到主分支前运行测试
|
||||
* PASS: 在测试失败时审查工件
|
||||
|
||||
**不应该:**
|
||||
|
||||
* ❌ 使用不稳定的选择器(CSS 类可能会改变)
|
||||
* ❌ 测试实现细节
|
||||
* ❌ 针对生产环境运行测试
|
||||
* ❌ 忽略不稳定测试
|
||||
* ❌ 在失败时跳过工件审查
|
||||
* ❌ 使用 E2E 测试每个边缘情况(使用单元测试)
|
||||
* FAIL: 使用不稳定的选择器(CSS 类可能会改变)
|
||||
* FAIL: 测试实现细节
|
||||
* FAIL: 针对生产环境运行测试
|
||||
* FAIL: 忽略不稳定测试
|
||||
* FAIL: 在失败时跳过工件审查
|
||||
* FAIL: 使用 E2E 测试每个边缘情况(使用单元测试)
|
||||
|
||||
## 重要注意事项
|
||||
|
||||
|
||||
@@ -139,7 +139,7 @@ ok project/internal/handler 0.023s
|
||||
| 已修改的文件 | 2 |
|
||||
| 剩余问题 | 0 |
|
||||
|
||||
构建状态:✅ 成功
|
||||
构建状态:PASS: 成功
|
||||
|
||||
```
|
||||
## 常见错误修复
|
||||
|
||||
@@ -131,16 +131,16 @@ return fmt.Errorf("get user %s: %w", userID, err)
|
||||
* 高:1
|
||||
* 中:0
|
||||
|
||||
建议:❌ 在严重问题修复前阻止合并
|
||||
建议:FAIL: 在严重问题修复前阻止合并
|
||||
|
||||
```
|
||||
## 批准标准
|
||||
|
||||
| 状态 | 条件 |
|
||||
|--------|-----------|
|
||||
| ✅ 批准 | 无 CRITICAL 或 HIGH 级别问题 |
|
||||
| ⚠️ 警告 | 仅有 MEDIUM 级别问题 (谨慎合并) |
|
||||
| ❌ 阻止 | 发现 CRITICAL 或 HIGH 级别问题 |
|
||||
| PASS: 批准 | 无 CRITICAL 或 HIGH 级别问题 |
|
||||
| WARNING: 警告 | 仅有 MEDIUM 级别问题 (谨慎合并) |
|
||||
| FAIL: 阻止 | 发现 CRITICAL 或 HIGH 级别问题 |
|
||||
|
||||
## 与其他命令的集成
|
||||
|
||||
|
||||
@@ -44,7 +44,7 @@ python3 ~/.claude/skills/continuous-learning-v2/scripts/instinct-cli.py import <
|
||||
## 导入过程
|
||||
|
||||
```
|
||||
📥 从 team-instincts.yaml 导入本能
|
||||
从 team-instincts.yaml 导入本能
|
||||
================================================
|
||||
|
||||
发现 12 个待导入的本能。
|
||||
@@ -60,12 +60,12 @@ python3 ~/.claude/skills/continuous-learning-v2/scripts/instinct-cli.py import <
|
||||
|
||||
## 重复本能 (3)
|
||||
已存在类似本能:
|
||||
⚠️ prefer-functional-style
|
||||
WARNING: prefer-functional-style
|
||||
本地: 0.8 置信度, 12 次观察
|
||||
导入: 0.7 置信度
|
||||
→ 保留本地 (置信度更高)
|
||||
|
||||
⚠️ test-first-workflow
|
||||
WARNING: test-first-workflow
|
||||
本地: 0.75 置信度
|
||||
导入: 0.9 置信度
|
||||
→ 更新为导入 (置信度更高)
|
||||
@@ -105,10 +105,10 @@ project_name: "my-project"
|
||||
导入后:
|
||||
|
||||
```
|
||||
✅ 导入完成!
|
||||
PASS: 导入完成!
|
||||
|
||||
新增:8 项本能
|
||||
更新:1 项本能
|
||||
新增:8 项本能
|
||||
更新:1 项本能
|
||||
跳过:3 项本能(已存在同等或更高置信度的版本)
|
||||
|
||||
新本能已保存至:~/.claude/homunculus/instincts/inherited/
|
||||
|
||||
@@ -132,7 +132,7 @@ $ ./gradlew test
|
||||
| Files modified | 2 |
|
||||
| Remaining issues | 0 |
|
||||
|
||||
Build Status: ✅ SUCCESS
|
||||
Build Status: PASS: SUCCESS
|
||||
````
|
||||
|
||||
## 常见的已修复错误
|
||||
|
||||
@@ -84,7 +84,7 @@ Agent:
|
||||
## Static Analysis Results
|
||||
✓ Build: Successful
|
||||
✓ detekt: No issues
|
||||
⚠ ktlint: 2 formatting warnings
|
||||
WARNING: ktlint: 2 formatting warnings
|
||||
|
||||
## Issues Found
|
||||
|
||||
@@ -120,16 +120,16 @@ launch {
|
||||
- HIGH: 1
|
||||
- MEDIUM: 0
|
||||
|
||||
Recommendation: ❌ Block merge until CRITICAL issue is fixed
|
||||
Recommendation: FAIL: Block merge until CRITICAL issue is fixed
|
||||
````
|
||||
|
||||
## 批准标准
|
||||
|
||||
| 状态 | 条件 |
|
||||
|--------|-----------|
|
||||
| ✅ 批准 | 无严重或高优先级问题 |
|
||||
| ⚠️ 警告 | 仅存在中优先级问题(谨慎合并) |
|
||||
| ❌ 阻止 | 发现严重或高优先级问题 |
|
||||
| PASS: 批准 | 无严重或高优先级问题 |
|
||||
| WARNING: 警告 | 仅存在中优先级问题(谨慎合并) |
|
||||
| FAIL: 阻止 | 发现严重或高优先级问题 |
|
||||
|
||||
## 与其他命令的集成
|
||||
|
||||
|
||||
@@ -74,7 +74,7 @@ origin: auto-extracted
|
||||
| **吸收到 \[X]** | 应追加到现有技能 | 显示目标技能和添加内容 → 步骤 6 |
|
||||
| **放弃** | 琐碎、冗余或过于抽象 | 解释原因并停止 |
|
||||
|
||||
**指导维度**(用于告知裁决,不进行评分):
|
||||
**指导维度**(用于告知裁决,不进行评分):
|
||||
|
||||
* **具体性和可操作性**:包含可立即使用的代码示例或命令
|
||||
* **范围契合度**:名称、触发条件和内容保持一致,并专注于单一模式
|
||||
|
||||
@@ -209,11 +209,11 @@ mcp__ace-tool__search_context({
|
||||
|
||||
3. 以 **粗体文本** 输出提示(必须使用实际保存的文件路径):
|
||||
|
||||
***
|
||||
***
|
||||
|
||||
**计划已生成并保存至 `.claude/plan/actual-feature-name.md`**
|
||||
**计划已生成并保存至 `.claude/plan/actual-feature-name.md`**
|
||||
|
||||
**请审阅以上计划。您可以:**
|
||||
**请审阅以上计划。您可以:**
|
||||
|
||||
* **修改计划**:告诉我需要调整的内容,我会更新计划
|
||||
* **执行计划**:复制以下命令到新会话
|
||||
@@ -222,9 +222,9 @@ mcp__ace-tool__search_context({
|
||||
/ccg:execute .claude/plan/actual-feature-name.md
|
||||
```
|
||||
|
||||
***
|
||||
***
|
||||
|
||||
**注意**:上面的 `actual-feature-name.md` 必须替换为实际保存的文件名!
|
||||
**注意**:上面的 `actual-feature-name.md` 必须替换为实际保存的文件名!
|
||||
|
||||
4. **立即终止当前响应**(在此停止。不再进行工具调用。)
|
||||
|
||||
|
||||
@@ -93,7 +93,7 @@ Agent:
|
||||
## Static Analysis Results
|
||||
✓ ruff: No issues
|
||||
✓ mypy: No errors
|
||||
⚠️ black: 2 files need reformatting
|
||||
WARNING: black: 2 files need reformatting
|
||||
✓ bandit: No security issues
|
||||
|
||||
## Issues Found
|
||||
@@ -171,7 +171,7 @@ with open("config.json") as f: # Good
|
||||
* 高:1
|
||||
* 中:2
|
||||
|
||||
建议:❌ 在关键问题修复前阻止合并
|
||||
建议:FAIL: 在关键问题修复前阻止合并
|
||||
|
||||
## 所需的格式化
|
||||
|
||||
@@ -182,9 +182,9 @@ with open("config.json") as f: # Good
|
||||
|
||||
| 状态 | 条件 |
|
||||
|--------|-----------|
|
||||
| ✅ 批准 | 无 CRITICAL 或 HIGH 级别问题 |
|
||||
| ⚠️ 警告 | 仅存在 MEDIUM 级别问题(谨慎合并) |
|
||||
| ❌ 阻止 | 发现 CRITICAL 或 HIGH 级别问题 |
|
||||
| PASS: 批准 | 无 CRITICAL 或 HIGH 级别问题 |
|
||||
| WARNING: 警告 | 仅存在 MEDIUM 级别问题(谨慎合并) |
|
||||
| FAIL: 阻止 | 发现 CRITICAL 或 HIGH 级别问题 |
|
||||
|
||||
## 与其他命令的集成
|
||||
|
||||
|
||||
@@ -72,7 +72,7 @@
|
||||
已跳过: 2 个项目(测试失败)
|
||||
已节省: ~450 行代码被移除
|
||||
──────────────────────────────
|
||||
所有测试通过 ✅
|
||||
所有测试通过 PASS:
|
||||
```
|
||||
|
||||
## 规则
|
||||
|
||||
@@ -64,9 +64,9 @@ description: 从 ~/.claude/sessions/ 加载最新的会话文件,并从上次
|
||||
[用你自己的话总结 2-3 句话]
|
||||
|
||||
当前状态:
|
||||
✅ 已完成:[数量] 项已确认
|
||||
🔄 进行中:[列出进行中的文件]
|
||||
🗒️ 未开始:[列出计划但未开始的文件]
|
||||
PASS: 已完成:[数量] 项已确认
|
||||
进行中:[列出进行中的文件]
|
||||
未开始:[列出计划但未开始的文件]
|
||||
|
||||
不应重试的内容:
|
||||
[列出每个失败的方法及其原因——此部分至关重要]
|
||||
@@ -98,10 +98,10 @@ description: 从 ~/.claude/sessions/ 加载最新的会话文件,并从上次
|
||||
加载该日期最近修改的匹配文件,无论其使用的是旧的无ID格式还是当前的短ID格式。
|
||||
|
||||
**会话文件引用了已不存在的文件:**
|
||||
在简报中注明 — "⚠️ 会话中引用了 `path/to/file.ts`,但在磁盘上未找到。"
|
||||
在简报中注明 — "WARNING: 会话中引用了 `path/to/file.ts`,但在磁盘上未找到。"
|
||||
|
||||
**会话文件来自超过7天前:**
|
||||
注明时间间隔 — "⚠️ 此会话来自 N 天前(阈值:7天)。情况可能已发生变化。" — 然后正常继续。
|
||||
注明时间间隔 — "WARNING: 此会话来自 N 天前(阈值:7天)。情况可能已发生变化。" — 然后正常继续。
|
||||
|
||||
**用户直接提供了文件路径(例如,从队友处转发而来):**
|
||||
读取它并遵循相同的简报流程 — 无论来源如何,格式都是相同的。
|
||||
@@ -124,13 +124,13 @@ SESSION LOADED: /Users/you/.claude/sessions/2024-01-15-abc123de-session.tmp
|
||||
注册和登录端点已部分完成。通过中间件进行路由保护尚未开始。
|
||||
|
||||
当前状态:
|
||||
✅ 已完成:3 项(注册端点、JWT 生成、密码哈希)
|
||||
🔄 进行中:app/api/auth/login/route.ts(令牌有效,但 cookie 尚未设置)
|
||||
🗒️ 未开始:middleware.ts、app/login/page.tsx
|
||||
PASS: 已完成:3 项(注册端点、JWT 生成、密码哈希)
|
||||
进行中:app/api/auth/login/route.ts(令牌有效,但 cookie 尚未设置)
|
||||
未开始:middleware.ts、app/login/page.tsx
|
||||
|
||||
需避免的事项:
|
||||
❌ Next-Auth — 与自定义 Prisma 适配器冲突,每次请求均抛出适配器错误
|
||||
❌ localStorage 存储 JWT — 导致 SSR 水合不匹配,与 Next.js 不兼容
|
||||
FAIL: Next-Auth — 与自定义 Prisma 适配器冲突,每次请求均抛出适配器错误
|
||||
FAIL: localStorage 存储 JWT — 导致 SSR 水合不匹配,与 Next.js 不兼容
|
||||
|
||||
待解决问题 / 阻碍:
|
||||
- cookies().set() 在路由处理器中是否有效,还是仅适用于服务器操作?
|
||||
|
||||
@@ -122,10 +122,10 @@ mkdir -p ~/.claude/sessions
|
||||
|
||||
| 文件 | 状态 | 备注 |
|
||||
| ----------------- | -------------- | ---------------------------- |
|
||||
| `path/to/file.ts` | ✅ 完成 | [其作用] |
|
||||
| `path/to/file.ts` | 🔄 进行中 | [已完成什么,剩余什么] |
|
||||
| `path/to/file.ts` | ❌ 损坏 | [问题所在] |
|
||||
| `path/to/file.ts` | 🗒️ 未开始 | [计划但尚未接触] |
|
||||
| `path/to/file.ts` | PASS: 完成 | [其作用] |
|
||||
| `path/to/file.ts` | 进行中 | [已完成什么,剩余什么] |
|
||||
| `path/to/file.ts` | FAIL: 损坏 | [问题所在] |
|
||||
| `path/to/file.ts` | 未开始 | [计划但尚未接触] |
|
||||
|
||||
如果未修改任何文件:"本次会话未修改任何文件。"
|
||||
|
||||
@@ -213,11 +213,11 @@ mkdir -p ~/.claude/sessions
|
||||
|
||||
| 文件 | 状态 | 备注 |
|
||||
| -------------------------------- | -------------- | ----------------------------------------------- |
|
||||
| `app/api/auth/register/route.ts` | ✅ 已完成 | 工作正常,已测试 |
|
||||
| `app/api/auth/login/route.ts` | 🔄 进行中 | 令牌已生成但尚未设置 cookie |
|
||||
| `lib/auth.ts` | ✅ 已完成 | JWT 辅助函数,全部已测试 |
|
||||
| `middleware.ts` | 🗒️ 未开始 | 路由保护,需要先实现 cookie 读取逻辑 |
|
||||
| `app/login/page.tsx` | 🗒️ 未开始 | UI 尚未开始 |
|
||||
| `app/api/auth/register/route.ts` | PASS: 已完成 | 工作正常,已测试 |
|
||||
| `app/api/auth/login/route.ts` | 进行中 | 令牌已生成但尚未设置 cookie |
|
||||
| `lib/auth.ts` | PASS: 已完成 | JWT 辅助函数,全部已测试 |
|
||||
| `middleware.ts` | 未开始 | 路由保护,需要先实现 cookie 读取逻辑 |
|
||||
| `app/login/page.tsx` | 未开始 | UI 尚未开始 |
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -134,7 +134,7 @@ FAIL lib/liquidity.test.ts
|
||||
1 test failed, 0 passed
|
||||
```
|
||||
|
||||
✅ 测试按预期失败。准备实施。
|
||||
PASS: 测试按预期失败。准备实施。
|
||||
|
||||
## 步骤 4:实现最小化代码(绿)
|
||||
|
||||
@@ -180,7 +180,7 @@ PASS lib/liquidity.test.ts
|
||||
3 tests passed
|
||||
```
|
||||
|
||||
✅ 所有测试通过!
|
||||
PASS: 所有测试通过!
|
||||
|
||||
## 步骤 6:重构(改进)
|
||||
|
||||
@@ -237,7 +237,7 @@ PASS lib/liquidity.test.ts
|
||||
3 tests passed
|
||||
```
|
||||
|
||||
✅ 重构完成,测试仍然通过!
|
||||
PASS: 重构完成,测试仍然通过!
|
||||
|
||||
## 步骤 8:检查覆盖率
|
||||
|
||||
@@ -248,29 +248,29 @@ File | % Stmts | % Branch | % Funcs | % Lines
|
||||
---------------|---------|----------|---------|--------
|
||||
liquidity.ts | 100 | 100 | 100 | 100
|
||||
|
||||
Coverage: 100% ✅ (Target: 80%)
|
||||
Coverage: 100% PASS: (Target: 80%)
|
||||
```
|
||||
|
||||
✅ TDD 会话完成!
|
||||
PASS: TDD 会话完成!
|
||||
|
||||
```
|
||||
## TDD 最佳实践
|
||||
|
||||
**应做:**
|
||||
- ✅ 先写测试,再写实现
|
||||
- ✅ 运行测试并确认失败,再实现功能
|
||||
- ✅ 编写最少代码使测试通过
|
||||
- ✅ 仅在测试通过后进行重构
|
||||
- ✅ 添加边界情况和错误场景
|
||||
- ✅ 目标覆盖率 80% 以上(关键代码 100%)
|
||||
- PASS: 先写测试,再写实现
|
||||
- PASS: 运行测试并确认失败,再实现功能
|
||||
- PASS: 编写最少代码使测试通过
|
||||
- PASS: 仅在测试通过后进行重构
|
||||
- PASS: 添加边界情况和错误场景
|
||||
- PASS: 目标覆盖率 80% 以上(关键代码 100%)
|
||||
|
||||
**不应做:**
|
||||
- ❌ 先写实现再写测试
|
||||
- ❌ 每次更改后跳过运行测试
|
||||
- ❌ 一次性编写过多代码
|
||||
- ❌ 忽略失败的测试
|
||||
- ❌ 测试实现细节(应测试行为)
|
||||
- ❌ 过度模拟(优先使用集成测试)
|
||||
- FAIL: 先写实现再写测试
|
||||
- FAIL: 每次更改后跳过运行测试
|
||||
- FAIL: 一次性编写过多代码
|
||||
- FAIL: 忽略失败的测试
|
||||
- FAIL: 测试实现细节(应测试行为)
|
||||
- FAIL: 过度模拟(优先使用集成测试)
|
||||
|
||||
## 应包含的测试类型
|
||||
|
||||
|
||||
@@ -57,7 +57,7 @@
|
||||
src/services/auth.ts 45% 88%
|
||||
src/utils/validation.ts 32% 82%
|
||||
──────────────────────────────
|
||||
总计: 67% 84% ✅
|
||||
总计: 67% 84% PASS:
|
||||
```
|
||||
|
||||
## 重点关注领域
|
||||
|
||||
Reference in New Issue
Block a user