用途:仅用于 Laravel 项目中的 Pest PHP 测试。当需要编写、编辑、修复或重构测试时触发。
主要能力:使用 Pest 编写测试;用 php artisan make:test --pest {name} 创建测试,{name} 只写路径与测试名,不含测试套件(如用 SomeControllerTest,而非 Feature/SomeControllerTest;单元测试用 php artisan make:test --pest --unit SomeServiceTest)。测试分为 tests/Feature、tests/Unit 与 tests/Browser。Pest 同时支持 test() 与 it(),新测试应参照同目录既有约定;未经批准不要删除测试。
运行方式:先按过滤条件运行最小测试,如 php artisan test --compact --filter=testName;全部运行用 php artisan test --compact;单文件用 php artisan test --compact tests/Feature/ExampleTest.php;仅运行受近期改动影响的测试用 ./vendor/bin/pest --parallel --tia。
断言与写法:优先用具体断言,如 assertSuccessful()、assertNotFound()、assertForbidden(),而非 assertStatus();使用 mock 前导入 use function Pest\Laravel\mock;;重复性测试(如验证规则)使用数据集 with([...])。
Pest 5 特性:Tia 测试影响分析(缓存并重放未受影响测试结果,自动识别 Laravel、Symfony、Livewire、Inertia);按执行时间平衡的分片,使用 ./vendor/bin/pest --update-shards 与 ./vendor/bin/pest --shard=1/4,并将 tests/.pest/shards.json 提交到仓库;新增验证期望 toBeEmail()、toBeUlid()、toBeIpAddress()、toBeMacAddress()、toBeHostname()、toBeDomain()、toBeBase64()、toBeHexadecimal(),均支持 .not;浏览器测试位于 tests/Browser/,可用 visit()、点击、输入、滚动、选择、提交、拖放、触摸手势,并支持多浏览器、不同设备视口与明暗模式;冒烟测试可批量访问页面并断言无 JavaScript 错误或控制台日志;视觉回归测试通过截图比对检测视觉变化;架构测试用 arch() 约束命名与继承等代码约定。
限制:仅适用于 Laravel 项目与 Pest;浏览器测试需真实浏览器环境;分片配置需提交 shards.json 以保持 CI 一致;使用 mock 需正确导入;浏览器测试应包含 assertNoJavaScriptErrors();具体版本兼容与安装细节资料未完整提供。