Appearance
Laravel TDD Skill 是 Everything Claude Code 插件体系中专为 Laravel 项目打造的测试驱动开发(TDD)能力模块。它集成 PHPUnit/Pest 测试框架、Eloquent 工厂模式、数据库隔离、Fakes、覆盖率门槛等最佳实践,支持新特性开发、重构、Bug 修复等场景,自动引导 Red-Green-Refactor 流程。Skill 可与多类 Agent 协作,保障 80%+ 单元与功能测试覆盖率,极大提升 AI 辅助 Laravel 编程的质量与效率。
Everything Claude Code Laravel TDD Skill:PHPUnit/Pest、工厂模式、数据库测试与覆盖率目标
在 AI 编程助手(如 Claude Code、Codex、Cursor)辅助 Laravel 项目开发时,如何确保新功能、重构和修复都能被可靠测试覆盖?Laravel TDD Skill 正是为此而生——它将生产级 TDD 流程、工厂模式、数据库隔离、Fakes、覆盖率校验等一体化封装,自动引导 AI 生成高质量、易维护的测试代码,让测试驱动开发成为 Laravel 团队的默认工作流。
本指南将手把手教你如何在实际项目中高效用好该 Skill,系统性提升 AI 辅助 Laravel 编程的测试质量与交付信心。你也可以结合 Everything Claude Code 完全指南 了解 Skill/Agent/Hook 全景,或通过 Claude Code 快速上手指南 快速配置体验。
一、Skill 解决了什么问题?
传统 AI 辅助 Laravel 编程的痛点:
- 测试代码生成质量参差不齐,易遗漏边界和覆盖率目标
- 数据库测试环境易污染开发/生产数据,难以保证隔离性
- 手动维护工厂和 Fakes 费时费力,难以复用
- 新特性开发或重构时,测试未必先行,回归风险高
Laravel TDD Skill 带来的核心改进:
- 强制引导 Red-Green-Refactor TDD 流程,测试先行
- 自动选择 Pest 或 PHPUnit,生成风格统一、易读易维护的测试
- 工厂模式与状态(states)集成,轻松覆盖各种数据场景
- 数据库测试自动隔离(RefreshDatabase/DatabaseTransactions),无副作用
- Fakes(如 Queue、Mail、Notification、Event)自动注入,副作用可控
- 覆盖率门槛(80%+)与 CI 集成,保障代码质量
- 支持 HTTP、Eloquent、授权、外部 API 等多层测试
二、Skill 触发条件与适用场景
Skill 会在以下场景自动激活:
- 新增 Laravel 控制器/路由/服务/模型等功能时
- 进行 Bug 修复、重构或性能优化时
- 需要为 Eloquent 模型、策略(Policy)、Job、Notification 等编写测试时
- 需要隔离数据库副作用、模拟外部服务或队列时
推荐优先使用 Pest(除非团队已统一用 PHPUnit)。
三、完整使用流程(Step by Step)
1. 选择测试层级与框架
- 纯业务逻辑、服务类 → 单元测试(Unit)
- HTTP 路由、验证、策略、响应结构 → 功能测试(Feature)
- 涉及数据库、队列、外部服务 → 集成测试(Integration)
Skill 会自动推荐合适的测试层级和框架(Pest 优先)。
2. 编写第一个失败的测试(Red)
示例(Pest 风格,推荐):
php
use App\Models\User;
use function Pest\Laravel\actingAs;
use function Pest\Laravel\assertDatabaseHas;
uses(\Illuminate\Foundation\Testing\RefreshDatabase::class);
test('owner can create project', function () {
$user = User::factory()->create();
$response = actingAs($user)->postJson('/api/projects', [
'name' => 'New Project',
]);
$response->assertCreated();
assertDatabaseHas('projects', ['name' => 'New Project']);
});此时功能未实现,测试应失败。
3. 实现最小可用代码(Green)
实现控制器/服务/模型等,让测试通过。Skill 可协助自动补全实现代码。
4. 重构(Refactor)
优化实现与测试代码,保持测试通过。Skill 会建议提取工厂、复用 Fakes 等最佳实践。
5. 工厂模式与状态(Factory + States)
批量生成测试数据,支持边界场景:
php
$user = User::factory()->state(['role' => 'admin'])->create();
$projects = Project::factory()->count(3)->for($user)->create();Skill 自动为测试用例生成合适的工厂与状态方法。
6. 数据库测试隔离
- 默认使用
RefreshDatabasetrait,测试间自动迁移与回滚,保证数据隔离 - 如需更高效(已迁移),可用
DatabaseTransactions - 测试配置自动切换到 SQLite 内存数据库,避免污染开发/生产数据
7. Fakes 与副作用隔离
Skill 自动注入 Fakes,避免真实发送邮件/通知/队列:
php
use Illuminate\Support\Facades\Queue;
Queue::fake();
dispatch(new SendOrderConfirmation($order->id));
Queue::assertPushed(SendOrderConfirmation::class);php
use Illuminate\Support\Facades\Notification;
Notification::fake();
$user->notify(new InvoiceReady($invoice));
Notification::assertSentTo($user, InvoiceReady::class);8. 授权与策略测试
Skill 支持自动生成 Gate/Policy 授权测试:
php
use Illuminate\Support\Facades\Gate;
$this->assertTrue(Gate::forUser($user)->allows('update', $project));
$this->assertFalse(Gate::forUser($otherUser)->allows('update', $project));9. HTTP/外部服务隔离
Skill 推荐用 Http::fake() 隔离外部 API,断言请求内容:
php
use Illuminate\Support\Facades\Http;
Http::fake();
$response = $this->getJson('/api/external');
Http::assertSent(fn ($request) => $request->url() === 'https://api.example.com/data');10. 覆盖率门槛与 CI 集成
- 默认要求单元+功能测试覆盖率 80% 以上
- 支持
pcov或XDEBUG_MODE=coverage,Skill 自动生成覆盖率报告 - 推荐在 CI/CD(如 GitHub Actions)集成
php artisan test --coverage
11. 测试命令与环境隔离
- Skill 自动生成/维护
phpunit.xml,测试数据库配置为 SQLite 内存 - 推荐命令:bash
php artisan test vendor/bin/pest vendor/bin/phpunit - 测试环境变量与开发/生产完全隔离
12. Inertia.js 特殊断言支持
Skill 可为 Inertia.js 项目生成组件与 props 的专用断言:
php
$response->assertInertia(fn (AssertableInertia $page) => $page
->component('Dashboard')
->where('user.id', $user->id)
->has('projects')
);四、输出示例
Pest 测试输出:
PASS Tests\Feature\ProjectTest
✓ owner can create project
✓ projects index returns paginated results
Tests: 2 passed
Time: 0.45s覆盖率报告(CI 输出):
Code Coverage Report: 82.3% (unit + feature)
All checks passed!五、常见配套 Agent 与协作关系
- TDD Guide Agent:强制测试先行,确保覆盖率门槛,自动引导 Red-Green-Refactor 流程(详见 TDD Guide Agent)
- Code Reviewer Agent:对测试代码和实现进行质量、安全、可维护性审查,给出改进建议(详见 Code Reviewer Agent)
- Verification Loop Skill:与 TDD Skill 配合,形成完整的端到端验证循环,自动检测遗漏的测试与覆盖率(详见 Verification Loop Skill)
- Laravel Verification Skill:在发布前自动检查 Env、Lint、静态分析与安全扫描,保障测试与代码质量(详见 Laravel Verification Skill)
FAQ
Q: Skill 会自动选择 Pest 还是 PHPUnit 吗?
A: 会。Skill 默认推荐 Pest,如项目已统一用 PHPUnit,则继续沿用。
Q: 如何保证测试不会污染开发或生产数据库?
A: Skill 自动配置测试环境为 SQLite 内存数据库,并用 RefreshDatabase/DatabaseTransactions 保证每次测试数据隔离。
Q: Skill 能帮我生成工厂、Fakes、授权等复杂测试吗?
A: 可以。Skill 支持自动生成 Eloquent 工厂、Fakes(如 Queue/Mail/Notification)、授权策略等多层测试代码,极大提升测试覆盖率与易用性。