先写测试再实现功能,使用Pest提升Laravel测试效率。安装Pest后编写用户列表接口测试,通过创建路由、控制器和资源使测试通过,再迭代添加认证校验等新测试并重构代码,实现安全持续的开发流程。

在 Laravel 中使用 Pest 进行测试驱动开发(TDD)是一种高效、简洁且富有表达力的方式。Pest 是专为 PHP 设计的现代测试框架,语法更轻量,与 PHPUnit 兼容,特别适合 Laravel 项目。下面是一个实用的入门指南,带你用 Laravel + Pest 实现 TDD。
安装并配置 Pest
要在 Laravel 项目中启用 Pest,先通过 Composer 安装:
composer require –dev pestphp/pest pestphp/pest-plugin-laravel php artisan pest:install
执行后,Pest 会自动创建 tests/Pest.php 和 tests/Feature、tests/Unit 目录下的示例文件。Laravel 插件还提供了 RefreshDatabase、WithoutMiddleware 等常用 Trait 的快捷支持。
编写第一个测试:遵循 TDD 流程
TDD 的核心是“先写测试,再实现功能”。假设我们要开发一个 API 接口,用于获取用户列表。
先在 tests/Feature/UsersTest.php 中写测试:
use IlluminateFoundationTestingRefreshDatabase;uses(RefreshDatabase::class);it('returns a list of users', function () { $user = User::factory()->create(); $response = $this->get('/api/users'); $response->assertStatus(200) ->assertJsonStructure([ 'data' => [ ['id', 'name', 'email'] ] ]);});
此时运行 ./vendor/bin/pest,测试会失败——这正是 TDD 的第一步:明确需求和预期行为。
实现功能使测试通过
接下来创建路由、控制器和资源响应,让测试通过。
在 routes/api.php 添加:
Route::get('/users', [UserController::class, 'index']);
生成控制器:
白瓜面试
白瓜面试 – AI面试助手,辅助笔试面试神器
40 查看详情
php artisan make:controller UserController
在控制器中实现逻辑:
use AppHttpResourcesUserResource;class UserController extends Controller{ public function index() { return UserResource::collection(User::all()); }}
创建资源:
php artisan make:resource UserResource
确保 UserResource 返回 id、name、email 字段。再次运行测试,应该已通过。
重构并持续迭代
测试通过后,可以安全重构代码。比如添加分页、权限控制或优化查询。每一步都先修改或新增测试,再调整实现。
例如,增加一个测试验证未授权用户无法访问:
it('requires authentication to access users', function () { $this->get('/api/users') ->assertStatus(401);});
然后在控制器中加入 $this->middleware('auth:sanctum');,直到测试通过为止。
基本上就这些。Laravel 配合 Pest 让 TDD 变得直观又愉快。测试不再是负担,而是开发的导航仪。
以上就是laravel如何使用Pest进行测试驱动开发_Laravel Pest测试驱动开发教程的详细内容,更多请关注php中文网其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/268319.html
微信扫一扫
支付宝扫一扫