mcp-pinterest
by terryso
Verified
- .cursor
- rules
---
description: TDD 和单元测试规范,适用于所有测试相关文件和实现文件。
globs: **/*.steps.ts, **/*.test.ts, **/*.test.tsx, **/*.ts, **/*.tsx, **/*.feature
---
# Project Development Rules
## TDD 开发规范
- 遵循 TDD 的三个步骤:
1. 先写测试(Red)
- 在编写实现代码之前先写测试
- 测试应该是失败的
- 测试代码要简单清晰
- 一次只测试一个功能点
2. 实现代码(Green)
- 快速实现功能让测试通过
- 优先考虑最简单的实现
- 不考虑代码质量和性能
- 专注于满足当前测试用例
3. 重构优化(Refactor)
- 在测试通过的基础上重构代码
- 改进代码设计和质量
- 消除重复代码
- 确保重构后测试仍然通过
## BDD 测试规范
- Feature 文件组织
- 文件以 .feature 结尾
- 按业务功能模块组织目录结构
- 一个 feature 文件对应一个主要业务功能
- Gherkin 语法规范
- 使用中文编写 Gherkin 语句
- Feature 描述业务功能模块
- Scenario 描述具体业务场景
- 遵循 Given-When-Then 结构:
- Given:准备测试前置条件
- When:执行被测试的操作
- Then:验证测试结果
- And:补充连接同类步骤
- But:补充对比步骤
- Steps 文件组织
- 步骤定义文件以 .steps.ts 结尾
- 与 feature 文件放在同一目录
- 按功能模块拆分 steps 文件
- 步骤实现要简单清晰
- Scenario 编写规范
- 一个场景只测试一个业务流程
- 场景描述要清晰明确
- 避免场景之间的依赖
- 合理使用 Background 共享前置条件
- 合理使用 Scenario Outline 和 Examples
- 严格遵循单场景开发流程:
* 一次只定义和开发一个场景
* 当前场景未完成前不开始新场景
* 场景完成的定义:
- 场景的步骤定义已实现
- 相关的单元测试已编写并通过
- 功能代码已实现并通过测试
- 代码已完成必要的重构
- 文档已更新
- 变更已提交到代码库
* 开发顺序:
1. 定义单个场景
2. 实现该场景的步骤定义
3. 编写相关单元测试
4. 实现功能代码
5. 运行并确保所有测试通过
6. 进行必要的重构
7. 完成后再开始下一个场景
- Hooks 使用规范
- Before/After hooks 处理环境准备和清理
- BeforeAll/AfterAll 处理全局设置
- 标签化管理不同场景的 hooks
- 保持 hooks 轻量和独立
- 数据管理
- 使用 Examples 表格管理测试数据
- 使用 fixtures 存放测试数据文件
- 避免在 feature 文件中硬编码数据
- 数据准备和清理要完整
- 测试环境
- 环境配置使用环境变量
- 不同环境的配置通过 profiles 管理
- 保持测试环境的独立性
- 环境相关的设置要文档化
## 单元测试规范
- 测试文件命名
- 测试文件以 .test.ts 结尾
- 测试文件与被测试文件同名
- 测试文件与被测试文件在同一目录
- 测试结构组织
- 使用 describe 描述测试单元
- 使用 it/test 描述测试用例
- 遵循 AAA 模式:
- Arrange(准备):准备测试数据和环境
- Act(执行):执行被测试的代码
- Assert(断言):验证测试结果
- 测试用例编写
- 每个测试用例只测试一个功能点
- 测试用例描述清晰明确
- 使用有意义的测试数据
- 避免测试用例之间的依赖
- 合理使用 setup 和 teardown
- 测试覆盖率要求
- 核心业务逻辑覆盖率 > 90%
- 工具函数覆盖率 > 80%
- 分支覆盖率 > 80%
- UI 组件覆盖率 > 70%
- Mock 和 Stub 使用规范
- 合理使用 Mock 隔离外部依赖
- 使用 Stub 模拟数据和行为
- Mock 对象要符合接口契约
- 避免过度 Mock
- 异步测试规范
- 正确使用 async/await
- 处理 Promise 和回调
- 测试超时设置合理
- 清理异步资源
- 测试代码质量
- 测试代码要如同产品代码一样整洁
- 避免在测试中使用魔法数字
- 提取重复的测试代码为辅助函数
- 使用有意义的变量命名
## 最佳实践
- 先写测试再写实现
- 小步快走,频繁提交
- 及时重构,保持代码整洁
- 测试要快速、独立、可重复
- 定期回归测试
- 持续集成时运行所有测试
- 定期检查测试覆盖率报告
- BDD 相关最佳实践
- 业务人员和开发人员共同评审 feature 文件
- 保持 Gherkin 语言的业务性和可读性
- 定期重构和优化测试场景
- 场景要覆盖关键业务流程
- 合理使用 tags 组织和管理场景
- 持续集成时执行所有 BDD 测试
- 定期检查场景覆盖率