关于 functional-tests
面向 Symfony 的测试技能,用于检查 HTTP 端点、服务、仓库和关键 URL。它帮助选择测试基类,并说明身份验证、数据库隔离和响应断言方法。
主要功能
- 01选择 HTTP、内核或单元测试
- 02检查端点响应与渲染 DOM
- 03使用 loginUser() 进行身份验证
- 04隔离数据库测试与测试数据
- 05添加 URL 冒烟测试
适用场景
- 01检查控制器响应和表单
- 02使用真实数据库测试服务
- 03覆盖需身份验证的路由
- 04为关键 URL 添加冒烟测试
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ dev-toolings/ superpowers-symfony --skill functional-tests安装后在 Claude Code 中输入/functional-tests确认已加载。
附带文件reference.md
详细介绍
功能测试(Symfony)
适用场景
- 需要通过内核检查控制器或 HTTP 端点:状态码、重定向、渲染后的 DOM、表单错误、电子邮件。
- 需要使用
KernelTestCase对照真实数据库测试仓库或服务。 - 需要通过
loginUser()覆盖需身份验证或受角色限制的路由。 - 需要为关键 URL 编写轻量级冒烟测试。
默认工作流
- 选择基类:HTTP 测试使用
WebTestCase,服务测试使用KernelTestCase,纯逻辑测试使用普通的TestCase。 - 直接调用
static::createClient()(不要先调用bootKernel()),并使用static::getContainer()读取私有服务。 - 使用
$client->loginUser($user)进行身份验证,而不是重新提交登录表单。 - 断言响应和 DOM:
assertResponseIsSuccessful()、assertResponseRedirects()、assertSelectorTextContains()、assertEmailCount()。 - 使用 DAMADoctrineTestBundle
PHPUnitExtension隔离测试,并使用 Foundry 重置测试固件。 - 使用数据提供器和硬编码 URL 添加冒烟测试。
注意事项
- 使用真实数据库和真实仓库;在涉及数据的测试中不要模拟 EntityManager 或仓库。
- 对无效表单提交,使用
assertResponseIsUnprocessable()断言 422(Symfony 8.0+ 行为)。 - 测试环境不会加载
.env.local:请使用.env.test或.env.test.local。 assertSessionHasFlashMessage()需要 Symfony 8.1+。
渐进式披露
- 使用此文件了解执行方式和风险控制。
- 需要深入了解实现细节时,请打开参考资料。
输出要求
- 为每个测试类选择合适的基类。
- 说明身份验证和数据库隔离策略。
- 列出覆盖的状态码、DOM 断言和冒烟测试 URL。
参考资料
reference.md
评论
支持 Markdown