信息发布→ 登录 注册 退出

如何在Laravel项目中使用Pest进行测试

发布时间:2025-11-20

点击量:
安装 Pest:使用 composer require pestphp/pest --dev 安装并运行 ./vendor/bin/pest --init 初始化;2. 安装 Laravel 插件:执行 composer require pestphp/pest-plugin-laravel --dev 和 php artisan pest:install 以获得 Laravel 集成支持;3. 编写测试:在 tests/Feature 下创建 LoginTest.php 等文件,利用简洁语法编写可读性强的测试用例。

在 Laravel 项目中使用 Pest 进行测试可以让你的测试代码更简洁、更具可读性。Pest 是一个基于 PHPUnit 的测试框架,专为简化测试语法而设计,特别适合与 Laravel 集成。以下是将 Pest 引入 Laravel 项目的完整流程。

安装 Pest

要在 Laravel 项目中使用 Pest,首先需要通过 Composer 安装 Pest PHP 包:

composer require pestphp/pest --dev

安装完成后,在项目根目录运行以下命令来初始化 Pest:

./vendor/bin/pest --init

这个命令会创建 tests/Pest.php 文件,并自动配置 phpunit.xml 使用 Pest 的测试发现机制。

安装 Laravel 插件(推荐)

Pest 提供了专门针对 Laravel 的插件,提供更多辅助函数和更流畅的集成体验:

composer require pestphp/pest-plugin-laravel --dev

安装后运行:

php artisan pest:install

这会生成 Laravel 专用的测试结构,比如 tests/Featuretests/Unit 下的示例测试文件,并启用 Laravel 特性支持(如无需手动调用 refreshDatabase)。

编写第一个 Pest 测试

tests/Feature 目录下创建一个测试文件,例如 LoginTest.php

// tests/Feature/LoginTest.php

use Illuminate\Foundation\Testing\RefreshDatabase;

uses(Tests\TestCase::class, RefreshDatabase::class);

test('guest can login with valid credentials', function () {
    $user = \App\Models\User::factory()->create([
        'email' => 'test@example.com',
        'password' => bcrypt('password'),
    ]);

    $response = $this->post('/login', [
        'email' => 'test@example.com',
        'password' => 'password',
    ]);

    $response->assertRedirect('/dashboard');
    $this->assertAuthenticated();
});

注意:uses() 函数用于设置共享上下文,替代传统的 setUp() 方法。所有测试都会继承指定的测试类和 Trait。

运行测试

使用以下命令运行所有测试:

./vendor/bin/pest

也可以运行特定目录或单个测试文件:

./vendor/bin/pest tests/Feature/LoginTest.php

加上 --watch 参数可在开发时自动监听文件变化(需安装 watch 模块):

./vendor/bin/pest --watch

基本上就这些。Pest 让 Laravel 测试变得更轻量、直观,尤其适合偏好简洁语法的团队。配合 Laravel 插件后,几乎可以零成本替换原有 PHPUnit 测试结构。

标签:# php  # laravel  # composer  # require  # xml  # 是一个  # 第一个  # 要在  # 可在  # 专为  # 更具  # 这会  # 创建一个  # 进行测试  # 安装完成后  
在线客服
服务热线

服务热线

4008888355

微信咨询
二维码
返回顶部
×二维码

截屏,微信识别二维码

打开微信

微信号已复制,请打开微信添加咨询详情!