测试驱动开发工作流
此技能确保所有代码开发遵循TDD原则,并具备全面的测试覆盖率。
何时激活
- 编写新功能或功能
- 修复错误或问题
- 重构现有代码
- 添加API端点
- 创建新组件
核心原则
1. 测试优先于代码
始终先编写测试,然后实现代码以使测试通过。
2. 覆盖率要求
- 最低80%覆盖率(单元 + 集成 + 端到端)
- 覆盖所有边缘情况
- 测试错误场景
- 验证边界条件
3. 测试类型
单元测试
- 单个函数和工具
- 组件逻辑
- 纯函数
- 辅助函数和工具
集成测试
- API端点
- 数据库操作
- 服务交互
- 外部API调用
端到端测试 (Playwright)
- 关键用户流程
- 完整工作流
- 浏览器自动化
- UI交互
TDD 工作流步骤
步骤 1: 编写用户旅程
作为一个[角色],我希望能够[行动],以便[获得收益]
示例:
作为一个用户,我希望能够进行语义搜索市场,
这样即使没有精确的关键词,我也能找到相关的市场。
步骤 2: 生成测试用例
针对每个用户旅程,创建全面的测试用例:
describe('Semantic Search', () => {
it('returns relevant markets for query', async () => {
// Test implementation
})
it('handles empty query gracefully', async () => {
// Test edge case
})
it('falls back to substring search when Redis unavailable', async () => {
// Test fallback behavior
})
it('sorts results by similarity score', async () => {
// Test sorting logic
})
})
步骤 3: 运行测试(它们应该失败)
npm test
# Tests should fail - we haven't implemented yet
步骤 4: 实现代码
编写最少的代码以使测试通过:
// Implementation guided by tests
export async function searchMarkets(query: string) {
…