mcpField
L
laravel:tdd-with-pest

laravel:tdd-with-pest

github.com/jpcaparas测试与质量157177 次安装17 周前更新
代码仓库

关于 laravel:tdd-with-pest

用于在 Laravel 中采用 Pest 或 PHPUnit 进行测试驱动开发的技能,介绍先失败、最小实现再重构的循环,并提供测试实践建议。

主要功能

  1. 01先失败的 TDD 循环
  2. 02Pest 或 PHPUnit 测试运行器
  3. 03使用工厂和 Seeder 准备测试数据
  4. 04功能测试与单元测试指引
  5. 05确定性测试实践

适用场景

  1. 01以失败测试启动生产代码更改
  2. 02测试 HTTP 行为和纯服务
  3. 03保持测试真实且可重复

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/jpcaparas/superpowers-laravel --skill laravel:tdd-with-pest

安装后在 Claude Code 中输入/laravel:tdd-with-pest确认已加载。

详细介绍

Laravel TDD(Pest/PHPUnit)

先编写测试。观察测试失败。编写最少的代码使测试通过。保持测试快速且贴近实际。

测试运行器

# Sail
sail artisan test --parallel

# Non-Sail
php artisan test --parallel

新建的 Laravel 应用默认使用 Pest,建议优先选择。若项目使用 PHPUnit,也可以继续使用。

RED – 编写失败的测试

  • 使用模型工厂;避免大量模拟
  • HTTP/控制器使用功能测试;纯服务使用单元测试
  • 根据行为为测试命名

示例(功能测试):

it('rejects empty email on signup', function () {
    $response = $this->post('/register', [
        'name' => 'Alice',
        'email' => '',
        'password' => 'secret',
        'password_confirmation' => 'secret',
    ]);

    $response->assertSessionHasErrors('email');
});

运行测试,并确认它因正确的原因而失败。

GREEN – 最少实现

编写最简单的代码,让失败的测试通过。不添加额外内容,也不重构。

REFACTOR – 清理代码

消除重复,明确命名,提取小型服务。保持测试通过。

指南

  • 每次生产代码变更都从一个失败的测试开始
  • 观察失败;绝不跳过失败阶段
  • 使用工厂/播种器生成贴近实际的数据
  • 根据需要在测试中使用数据库事务或刷新
  • 保持测试具有确定性;避免在异步流程中使用休眠

遇到困难时

  • 如果测试难以编写,说明设计耦合过度;提取服务或端口
  • 优先使用依赖注入;避免静态/全局状态

评论

支持 Markdown