关于 tdd-with-pest
面向使用 Pest v4 和 PHP 8.3+ 的 Symfony 项目的测试技能,指导按 RED-GREEN-REFACTOR 编写测试、配置 Symfony 测试绑定及迁移 PHPUnit 语法。
主要功能
- 01RED-GREEN-REFACTOR 工作流
- 02Symfony 内核与 HTTP 测试
- 03PHPUnit 转 Pest 指引
- 04并行与覆盖率测试门槛
适用场景
- 01以测试优先开发功能
- 02修复前复现缺陷
- 03测试 Symfony HTTP 行为
- 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 的测试。
默认工作流
- 确认 PHP 版本为 8.3+ 且 Pest 版本为 v4,然后运行
./vendor/bin/pest --init生成tests/Pest.php。 - 在
tests/Pest.php中绑定桥接类:uses(KernelTestCase::class, Factories::class, ResetDatabase::class)->in('Integration')和uses(WebTestCase::class, ...)->in('Functional')。 - RED:使用 Foundry v2 工厂编写
it()测试,运行./vendor/bin/pest --filter,并确认测试因正确的原因失败。 - GREEN:编写最精简的代码,然后进行 REFACTOR 并重新运行
./vendor/bin/pest。 - 使用
--parallel和--coverage --min=80为测试套件设置门槛。
注意事项
- 没有官方的 Symfony Pest 插件:不要引用
pestphp/pest-plugin-symfony,通过uses()绑定KernelTestCase或WebTestCase。 - Foundry v2 工厂会返回真实对象:不要调用
->object()。 - Pest 测试文件是匿名的,因此应使用
Factories和ResetDatabasetraits,而不是#[ResetDatabase]属性。 - 使用
expect()->and()串联相关检查;每个测试只测试一个概念。
渐进式展开
- 使用此文件了解执行规范和风险控制。
- 需要深入了解实现细节时,再打开参考资料。
输出要求
- 先提供失败的
./vendor/bin/pest输出(RED),然后提供通过的运行结果。 - 提供新增或修改的
tests/Pest.php绑定。 - 提供已更改的测试文件和执行过的命令。
参考资料
reference.md
评论
支持 Markdown