Vibe Tutorial
功能测试流程与自动化脚本

8.9 Hooks自动化测试

Tip

人会忘,但脚本不会。把规范交给机器,别考验人性。


1. 为什么要学这个?

你是团队里最仔细的程序员。但上周五临下班前,你急着去约会,随手提交了一行代码。 周一回来,发现你把 AWS 的密钥直接写在代码里提交上去了。 黑客在一小时内扫描到了你的密钥,开了 100 台挖矿机。公司破产了。

如果我们能设定一个规则:每次提交代码前,自动扫描一遍敏感信息。如果不通过,打死也不让提交。这就是 Git Hooks 的价值。


2. 核心概念:Git Hooks 与 Husky

Git 原生就有很多“钩子” (Hooks),比如 pre-commit (提交前)。 但配置原生的钩子很繁琐。前端界通常用 Husky 这条“哈士奇”来看门。

它的工作流

  1. 你输入 git commit -m "fix bug"
  2. Husky 拦截:等等,先别提交。我要检查你的背包。
  3. 执行命令:运行 npm run verify (含 Lint 检查、密钥扫描)。
  4. 结果
    • 失败:发现密钥!报错中止,提交失败。
    • 成功:放行,生成 Commit。

3. 解决方案 (HOW)

1. 安装哈士奇

pnpm add husky -D
npx husky init

2. 设置关卡

.husky/pre-commit 文件里,写下你想检查的命令:

# 1. 检查代码风格 (Lint)
npm run lint

# 2. 跑单元测试 (只跑逻辑测试,别跑太慢的 E2E)
npm run test:unit

3. 只检查改动的文件 (Lint-staged)

别每次都检查全项目 1000 个文件,太慢了。 我们需要 Lint-staged:只检查你这次修改过 (Staged) 的文件。

// package.json
{
  "lint-staged": {
    "*.{ts,tsx}": [
      "eslint --fix",  // 自动帮你修格式
      "vitest related --run" // 只跑相关的测试
    ]
  }
}

4. 真实案例

Story

价值 6 万美元的“一次泄露”

2014 年,一位开发者不小心把 AWS Access Key 上传到了 GitHub 公开仓库。 仅仅 5 分钟后,就有名为“AWS 爬虫”的机器人扫描到了这个 Key。 机器人自动开通了巨量的 EC2 实例挖比特币。第二天早上,账单:$60,000

Vibe 解法: 如果他配置了简单的 pre-commit 钩子,配合 gitleaks 扫描脚本。 在他按下回车的那一瞬间,终端就会报警:❌ 发现潜在密钥,提交已终止! 这一行简单的配置,价值 6 万美元。


5. 本章小结

  1. 守门员:Husky 是你本地仓库的最后一道防线。
  2. 速度第一pre-commit 必须快(30秒内),太慢的检查放到 CI 流水线去跑。
  3. 防呆设计:不要相信记忆力,要相信自动化。