关于 tdd-with-phpunit
tdd-with-phpunit 是面向使用 PHPUnit 10 或 11 的 Symfony 开发者的测试技能。它指导围绕应用行为、命令、表单和外部服务边界进行 RED-GREEN-REFACTOR,并明确输出要求和版本限制。
主要功能
- 01RED-GREEN-REFACTOR 工作流
- 02选择 Symfony 测试基类
- 03测试命令和无效表单
- 04用替身替换外部服务
- 05PHPUnit 属性与版本指导
适用场景
- 01以测试优先开发 Symfony 功能
- 02为新行为选择测试类
- 03测试控制台命令和 422 表单
- 04通过测试容器模拟外部服务
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ dev-toolings/ superpowers-symfony --skill tdd-with-phpunit安装后在 Claude Code 中输入/tdd-with-phpunit确认已加载。
附带文件reference.md
详细介绍
Tdd With Phpunit (Symfony)
使用场景
- 使用 PHPUnit 10/11 基于类的测试,通过 RED-GREEN-REFACTOR 推进功能开发。
- 为新行为选择
TestCase、KernelTestCase或WebTestCase。 - 测试控制台命令,或必须返回 422 的无效表单。
- 通过测试容器将外部服务替换为测试替身。
默认工作流
- RED:选择基类,使用
#[Test]、#[DataProvider]和#[CoversClass]编写测试,运行测试并确认失败原因正确。 - GREEN:编写通过测试所需的最少代码。
- 在测试套件全部通过的情况下进行 REFACTOR,每次更改后重新运行测试。
- 使用
static::getContainer()->set(Service::class, $mock)替换外部边界。 - 使用
CommandTester测试命令,或在 Symfony 8.1+ 上使用runCommand()和assertCommandIsSuccessful()。 - 使用
assertResponseIsUnprocessable()断言无效表单提交。
注意事项
- 使用 PHPUnit 10+ 属性,不要使用
@test或@dataProvider注解。 - 使用
static::getContainer()获取服务,不要使用旧版self::$container。 - 仅模拟真正的外部边界(HTTP 客户端、第三方 SDK);其他地方保留真实服务和真实数据库。
runCommand()和getContainer()->set()中的闭包需要 Symfony 8.1+。
渐进式说明
- 使用此文件了解执行方式和风险控制。
- 需要深入了解实现细节时,请打开参考资料。
输出要求
- 先提供失败的 PHPUnit 输出(RED),然后提供通过测试的运行结果。
- 列出已更改的测试文件,以及使用的基类和属性。
- 列出执行过的命令。
参考资料
reference.md
评论
支持 Markdown