mcpField
T
tdd-with-pest

tdd-with-pest

github.com/dev-toolings测试与质量22770 次安装3 周前更新
代码仓库

关于 tdd-with-pest

面向使用 Pest v4 和 PHP 8.3+ 的 Symfony 项目的测试技能,指导按 RED-GREEN-REFACTOR 编写测试、配置 Symfony 测试绑定及迁移 PHPUnit 语法。

主要功能

  1. 01RED-GREEN-REFACTOR 工作流
  2. 02Symfony 内核与 HTTP 测试
  3. 03PHPUnit 转 Pest 指引
  4. 04并行与覆盖率测试门槛

适用场景

  1. 01以测试优先开发功能
  2. 02修复前复现缺陷
  3. 03测试 Symfony HTTP 行为
  4. 04将 PHPUnit 测试迁至 Pest

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/dev-toolings/superpowers-symfony --skill tdd-with-pest

安装后在 Claude Code 中输入/tdd-with-pest确认已加载。

附带文件reference.md

详细介绍

使用 Pest 进行测试驱动开发(Symfony)

适用场景

  • 在运行 Pest v4(PHP 8.3+)的项目中,使用 RED-GREEN-REFACTOR 推进功能开发。
  • 编写需要 Symfony 内核或 HTTP 客户端的 it() 和 expect() 测试。
  • 使用 pest-plugin-drift 将现有的 PHPUnit 类测试转换为 Pest 语法。
  • 在修复前,为 Pest 测试套件添加复现 Bug 的测试。

默认工作流

  1. 确认 PHP 版本为 8.3+ 且 Pest 版本为 v4,然后运行 ./vendor/bin/pest --init 生成 tests/Pest.php。
  2. 在 tests/Pest.php 中绑定桥接类:uses(KernelTestCase::class, Factories::class, ResetDatabase::class)->in('Integration') 和 uses(WebTestCase::class, ...)->in('Functional')。
  3. RED:使用 Foundry v2 工厂编写 it() 测试,运行 ./vendor/bin/pest --filter,并确认测试因正确的原因失败。
  4. GREEN:编写最精简的代码,然后进行 REFACTOR 并重新运行 ./vendor/bin/pest。
  5. 使用 --parallel 和 --coverage --min=80 为测试套件设置门槛。

注意事项

  • 没有官方的 Symfony Pest 插件:不要引用 pestphp/pest-plugin-symfony,通过 uses() 绑定 KernelTestCase 或 WebTestCase。
  • Foundry v2 工厂会返回真实对象:不要调用 ->object()。
  • Pest 测试文件是匿名的,因此应使用 Factories 和 ResetDatabase traits,而不是 #[ResetDatabase] 属性。
  • 使用 expect()->and() 串联相关检查;每个测试只测试一个概念。

渐进式展开

  • 使用此文件了解执行规范和风险控制。
  • 需要深入了解实现细节时,再打开参考资料。

输出要求

  • 先提供失败的 ./vendor/bin/pest 输出(RED),然后提供通过的运行结果。
  • 提供新增或修改的 tests/Pest.php 绑定。
  • 提供已更改的测试文件和执行过的命令。

参考资料

  • reference.md

评论

支持 Markdown