关于 freeze-tests
freeze-tests 是一个 skill,可在重构期间阻止对匹配测试文件的写入和编辑,帮助保持测试所记录的行为。需要修改测试时可停用该模式。
主要功能
- 01阻止写入匹配的测试文件
- 02阻止编辑匹配的测试文件
- 03支持启用和停用
- 04冻结期间仍可运行测试
适用场景
- 01重构时保持测试定义不变
- 02优化性能并保留原有行为
- 03更新依赖时保持测试不变
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ proffesor-for-testing/ agentic-qe --skill freeze-tests安装后在 Claude Code 中输入/freeze-tests确认已加载。
附带文件scripts/block-test-edits.sh
详细介绍
冻结测试模式
启用后,会阻止对测试文件的所有修改。在重构期间使用,以确保行为(由测试体现)得到保留。
功能说明
阻止对匹配以下测试模式的任何文件执行 Write 和 Edit 操作:
**/*.test.{ts,js,tsx,jsx}**/*.spec.{ts,js,tsx,jsx}**/__tests__/****/tests/**
启用
/freeze-tests
使用 /freeze-tests off 停用。
Hook 配置
{
"hooks": {
"PreToolUse": [
{
"matcher": "Write|Edit",
"hook": ".claude/skills/freeze-tests/scripts/block-test-edits.sh",
"condition": "file matches **/*.test.* OR **/*.spec.* OR **/__tests__/** OR **/tests/**"
}
]
}
}
执行逻辑
#!/bin/bash
# block-test-edits.sh
FILE="$1"
if echo "$FILE" | grep -qP '\.(test|spec)\.(ts|js|tsx|jsx)$|__tests__|/tests/'; then
echo "BLOCKED: Test files are frozen during refactoring."
echo "If tests need updating, deactivate with: /freeze-tests off"
exit 1
fi
使用场景
- 重构:更改代码结构,但不改变行为
- 性能优化:提升代码速度,但不改变逻辑
- 依赖更新:升级库,同时保留原有行为
注意事项
- 如果测试在重构期间失败,冻结的测试无法修复——这正是设计目的(说明重构破坏了行为)
- 如果重构需要修改测试,那就不是纯粹的重构——请停用此模式,并将其视为功能变更
- 此模式不会阻止运行测试,只会阻止修改测试文件
评论
支持 Markdown