插件

在本节中,我们将讨论我们认可的官方和社区开发的插件。插件主要提供命名空间函数、控制台命令、自定义断言以及其他命令行选项,以增强默认的 Pest 体验。

如果您是插件开发者,请查阅我们的 创建插件文档,以获取有关如何创建 Pest 插件的更多信息。

以下插件由 Pest 团队维护


Faker

源代码github.com/pestphp/pest-plugin-faker

要开始使用 Pest 的 Faker 插件,您需要通过 Composer 引用该插件。

1composer require pestphp/pest-plugin-faker --dev

安装插件后,您可以利用命名空间函数 fake 为您的测试生成虚假数据。

1use function Pest\Faker\fake;
2 
3it('generates a name', function () {
4 $name = fake()->name; // random name...
5 
6 //
7});

您还可以通过向函数提供区域设置来指定 fake() 函数应使用的“区域设置”。

1use function Pest\Faker\fake;
2 
3it('generates a portuguese name', function () {
4 $name = fake('pt_PT')->name; // Nuno Maduro
5 
6 //
7});

要了解有关 Faker 的更多信息,包括其提供的 API 的全面详细信息,请查阅 其官方文档


Laravel

源代码github.com/pestphp/pest-plugin-laravel

要开始使用 Pest 的 Laravel 插件,您需要通过 Composer 引用此插件。

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

此插件为默认的 Pest 安装添加了其他 Artisan 命令和函数。例如,要生成 tests/Feature 目录中的新测试,您现在可以使用 pest:test Artisan 命令。

1php artisan pest:test UsersTest

创建测试时,您可以提供 --unit 选项以将测试放置在 tests/Unit 目录中。

1php artisan pest:test UsersTest --unit

执行 pest:dataset Artisan 命令将在 tests/Datasets 目录中创建一个新的数据集。

1php artisan pest:dataset Emails

如您所知,Laravel 提供了各种断言,您可以在功能测试中利用这些断言。使用 Pest 的 Laravel 插件时,您可以像往常一样访问所有这些断言。

1it('has a welcome page', function () {
2 $this->get('/')->assertStatus(200);
3});

此外,借助此插件,您可以在使用诸如 actingAsgetpostdelete 之类的命名空间函数时绕过 $this 变量。

1use function Pest\Laravel\{get};
2 
3it('has a welcome page', function () {
4 get('/')->assertStatus(200);
5 // same as $this->get('/')...
6});

为了说明这个方便的功能,我们可以使用另一个示例编写一个测试,该测试以经过身份验证的用户身份访问受限制的仪表板页面。

1use App\Models\User;
2use function Pest\Laravel\{actingAs};
3 
4test('authenticated user can access the dashboard', function () {
5 $user = User::factory()->create();
6 
7 actingAs($user)->get('/dashboard')
8 ->assertStatus(200);
9});

正如您所料,以前通过 $this-> 可访问的所有断言都作为命名空间函数可用。

1use function Pest\Laravel\{actingAs, get, post, delete, ...};

您可以在 Laravel 网站上找到完整的测试文档:laravel.com/docs/11.x/testing


Livewire

源代码github.com/pestphp/pest-plugin-livewire

要安装 Pest 的 Livewire 插件,您需要通过 Composer 引用该插件。

1composer require pestphp/pest-plugin-livewire --dev

安装插件后,您可以使用 livewire 命名空间函数访问您的 Livewire 组件。

1use function Pest\Livewire\livewire;
2 
3it('can be incremented', function () {
4 livewire(Counter::class)
5 ->call('increment')
6 ->assertSee(1);
7});
8 
9it('can be decremented', function () {
10 livewire(Counter::class)
11 ->call('decrement')
12 ->assertSee(-1);
13});

Watch

源代码github.com/pestphp/pest-plugin-watch

要安装 Pest 的“watch”插件,您需要通过 Composer 引用该插件。

1composer require pestphp/pest-plugin-watch --dev

确保您还安装了 fswatch,以便 Pest 可以监视文件何时更改。

一旦插件和 fswatch 都安装完毕,您就可以在运行 Pest 时使用 --watch 选项。此选项指示 Pest 监视您的应用程序,并在您更改指定目录列表中的文件时自动重新运行您的测试。

1pest --watch

默认情况下,插件会监视以下目录。

1tests/
2app/
3src/

要自定义监视的目录,请向 --watch 标志提供一个用逗号分隔的目录列表(相对于您的应用程序根目录)。

1pest --watch=app,routes,tests

在本节中,我们了解了插件如何增强您的 Pest 体验。现在,让我们看看如何使用 Pest 管理团队的任务和职责:团队管理