关于 laravel:tdd-with-pest
用于在 Laravel 中采用 Pest 或 PHPUnit 进行测试驱动开发的技能,介绍先失败、最小实现再重构的循环,并提供测试实践建议。
主要功能
- 01先失败的 TDD 循环
- 02Pest 或 PHPUnit 测试运行器
- 03使用工厂和 Seeder 准备测试数据
- 04功能测试与单元测试指引
- 05确定性测试实践
适用场景
- 01以失败测试启动生产代码更改
- 02测试 HTTP 行为和纯服务
- 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