用途:编写和审查 Laravel 项目的 PHPUnit 测试,适用于“写测试”“加测试”“审查测试”“phpunit”“laravel test”“feature test”等场景。每个测试文件以 declare(strict_types=1) 开头。
测试分类:功能测试(tests/Feature/)走完整 HTTP 栈,覆盖路由、控制器、中间件、验证与数据库,使用 $this->getJson()、$this->postJson() 等;单元测试(tests/Unit/)针对服务、动作类、值对象、辅助函数的隔离逻辑,不涉及 HTTP,尽量少用数据库。凡涉及路由、控制器或模型,默认写功能测试;纯逻辑与动作类用单元测试。
关键规则:接触数据库的测试类使用 RefreshDatabase;测试数据一律用模型工厂,而非 DB::table() 原始插入;每个测试方法只验证一种行为,命名以 test_ 前缀,如 test_user_can_update_own_profile;同时断言响应状态与副作用(数据库状态、派发任务、发送通知);认证用 actingAs($user);API 端点用 postJson()/getJson();Facade 伪造要在动作之前,如先 Queue::fake() 再执行再 Queue::assertPushed(...);用 assertDatabaseHas/assertDatabaseMissing 验证持久化;用 resolve() 从容器解析动作类以支持依赖注入,用 swap() 注入 mock。测试用于暴露缺陷:若测试发现源码行为有误,应指出问题并建议修复源码,绝不修改测试去迎合错误行为。
运行测试:大型测试套件可直接调用 PHPUnit 以降低 artisan 内存开销:./vendor/bin/phpunit、./vendor/bin/phpunit --filter=PostTest、./vendor/bin/phpunit --processes=auto(PHPUnit 11+ 并行)、./vendor/bin/phpunit --coverage-text --min=80;小套件或快速运行用 php artisan test,必要时 php -d memory_limit=1G artisan test。
限制:资料未提供该技能的安装方式、收费、支持平台与效果数据,暂未提供。