用途:在 Symfony 中通过内核编写功能测试。适用于需要检查控制器或 HTTP 端点的状态码、重定向、渲染 DOM、表单错误与邮件;需要用真实数据库测试仓库或服务(KernelTestCase);需要为登录或角色受限路由补充覆盖(loginUser());以及对关键 URL 做低成本冒烟测试。
主要能力与工作流:先选择基类——HTTP 用 WebTestCase,服务用 KernelTestCase,纯逻辑用普通 TestCase。直接调用 static::createClient()(不要先 bootKernel()),用 static::getContainer() 读取私有服务。使用 $client->loginUser($user) 认证,而不是重放登录表单。用 assertResponseIsSuccessful()、assertResponseRedirects()、assertSelectorTextContains()、assertEmailCount() 断言响应与 DOM。用 DAMADoctrineTestBundle 的 PHPUnitExtension 隔离测试,并用 Foundry reset 处理夹具。用数据提供器加硬编码 URL 添加冒烟测试。
限制与注意:数据相关测试使用真实数据库和真实仓库,不 mock EntityManager 或仓库。无效表单提交断言 422,使用 assertResponseIsUnprocessable()(Symfony 8.0+ 行为)。测试环境不加载 .env.local:请使用 .env.test 或 .env.test.local。assertSessionHasFlashMessage() 需要 Symfony 8.1+。更多实现细节参考 reference.md。