ホームページ > バックエンド開発 > PHPチュートリアル > phpunitデータプロバイダーを備えた雄弁工場を使用します

phpunitデータプロバイダーを備えた雄弁工場を使用します

Emily Anne Brown
リリース: 2025-03-06 02:40:08
オリジナル
465 人が閲覧しました

Using Eloquent Factories With PHPUnit Data Providers

Laravelフィーチャーテストで雄弁工場を使用する方法はいくつかあります。たとえば、複数のテストにモデルを使用する場合、

または単一のテストケースで直接モデルを作成できます。さまざまなデータに対してテストする必要があるテストケースがある場合は、EloquentモデルとPHPunitのデータプロバイダーを使用する必要がある場合があります。 setUp() 機能テストでデータプロバイダーを使用すると、フレームワークの

boots laravelを介して実行する前に実行される際に問題がある場合があります。データプロバイダーは実行中に非常に早い段階で解析されます

したがって、それらを使用したい場合は、次のエラーが発生します。 TestCase 上記のテストを実行する場合、使用しているLaravelのバージョンに応じて、上記のテストを実行する場合は、次のようなエラーを取得する必要があります。これは、Laravel 11で得たエラーを示します。 setUp() phpunitこれは、データプロバイダーコードが実行されている場合、Laravelアプリケーションがまだ開始されていないためです!害虫のPHPユーザーの場合、バインドされたデータセットの例は、モデルデータに閉鎖を使用する方法を示しています。

<?php namespace Tests\Feature;

use App\Models\User;
use Illuminate\Foundation\Testing\RefreshDatabase;
use PHPUnit\Framework\Attributes\DataProvider;
use Tests\TestCase;

class ExampleTest extends TestCase
{
    use RefreshDatabase;

    #[DataProvider('nonAdminUsers')]
    public function test_non_admin_users_cannot_access_admin($user): void
    {
        $response = $this
            ->actingAs($user())
            ->get('/admin')
            ->assertStatus(403);
    }

    public static function nonAdminUsers(): array
    {
        return [
            [User::factory()->player()->create()],
            [User::factory()->coach()->create()],
            [User::factory()->owner()->create()],
        ];
    }
}
ログイン後にコピー
phpunitでは、すぐにデータを作成することなく、閉鎖を使用してデータプロバイダーを介してテストにコードを渡すことができます。

<code>$ vendor/bin/phpunit tests/Feature/ExampleTest.php

There was 1 PHPUnit error:

1) Tests\Feature\ExampleTest::test_non_admin_users_cannot_access_admin
The data provider specified for Tests\Feature\ExampleTest::test_non_admin_users_cannot_access_admin is invalid
A facade root has not been set.

tests/Feature/ExampleTest.php:18</code>
ログイン後にコピー
呼び出しに注意してください。モデルを別の場所で使用する必要がある場合は、変数に割り当てるだけです。現在、ファクトリーデータはテストで作成されています。これはまさに私たちが望むものです! LaravelのHTTP機能テストの詳細については、ドキュメントをご覧ください。

以上がphpunitデータプロバイダーを備えた雄弁工場を使用しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート