Skip to content

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. 数据库测试隔离

  • 默认使用 RefreshDatabase trait,测试间自动迁移与回滚,保证数据隔离
  • 如需更高效(已迁移),可用 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% 以上
  • 支持 pcovXDEBUG_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)、授权策略等多层测试代码,极大提升测试覆盖率与易用性。