文档命令库修复 Jest 单测失败

修复 Jest 单测失败

当 Jest 测试用例失败时,使用 Claude Code 快速定位问题原因并自动修复代码或更新测试。

适用场景

  • Jest 测试套件执行失败
  • 快照测试不匹配需要更新
  • 异步测试超时或断言错误
  • 测试覆盖率不达标需要补充

复制命令

# 基础命令
分析并修复失败的Jest测试用例
 
# 包含快照更新
修复Jest测试失败,如果是快照问题请自动更新快照
 
# 针对特定测试文件
修复 src/components/Button.test.js 中失败的测试用例

执行步骤

1. 运行测试并收集错误信息

npm test -- --verbose --no-coverage

2. 让 Claude Code 分析失败原因

Claude Code 会自动:

  • 读取测试文件和被测试代码
  • 分析错误堆栈信息
  • 识别失败的具体原因(逻辑错误、快照不匹配、异步问题等)

3. 应用修复方案

根据分析结果,Claude Code 会:

  • 代码逻辑问题:直接修复源代码中的bug
  • 快照过期:运行 npm test -- --updateSnapshot 更新快照
  • 异步测试:添加适当的 await 或调整超时设置
  • 断言错误:修正测试期望值或被测试代码

4. 验证修复结果

npm test -- --coverage

验证命令

# 运行所有测试
npm test
 
# 只运行之前失败的测试
npm test -- --onlyFailures
 
# 检查测试覆盖率
npm test -- --coverage --coverageReporters=text
⚠️

⚠️ 快照更新风险:自动更新快照前,请确认变更是预期的,避免掩盖真实的回归问题。

常见修复场景

组件渲染测试失败

// 修复前:组件属性变更导致快照不匹配
expect(wrapper).toMatchSnapshot();
 
// 修复后:Claude Code会分析变更合理性并更新快照

异步操作测试超时

// 修复前:缺少异步等待
test('async operation', () => {
  const result = fetchData();
  expect(result).toBe('expected');
});
 
// 修复后:添加适当的异步处理
test('async operation', async () => {
  const result = await fetchData();
  expect(result).toBe('expected');
});

Mock 函数未正确设置

// 修复前:Mock 函数行为不符合预期
const mockFn = jest.fn();
mockFn.mockReturnValue('wrong value');
 
// 修复后:调整 Mock 返回值
const mockFn = jest.fn();
mockFn.mockReturnValue('expected value');

风险提示与回滚

潜在风险

  • 大量快照更新可能掩盖真实问题
  • 修改源代码可能影响其他功能
  • 测试覆盖率可能因删除测试而下降

回滚方案

# 回滚代码变更
git checkout HEAD -- src/
 
# 恢复之前的快照
git checkout HEAD -- **/__snapshots__/
 
# 重新运行测试验证
npm test

相关卡片

参考来源

关于我