oder direkt in einem einzigen Testfall ein Modell erstellen. Wenn Sie einen Testfall haben, der anhand verschiedener Daten getestet werden muss, müssen Sie möglicherweise das eloquente Modell und den Datenanbieter von Phpunit verwenden. setUp()
ausführen. Die Datenanbieter werden während des Laufs TestCase
sehr früh analysiert. Wenn Sie sie also verwenden möchten, werden Sie auf den folgenden Fehler stoßen: setUp()
phpunit
<?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()], ]; } }
Dies liegt daran, dass die Laravel -Anwendung noch nicht begonnen hat, wenn der Datenanbietercode ausgeführt wird! Wenn Sie ein PHP -Benutzer von Schädlingsbeschwerden sind, zeigt das Beispiel für gebundene Datensätze, wie Abschluss für Modelldaten verwendet wird:
<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>
In phpunit können wir Code über einen Datenanbieter über einen Datenanbieter übergeben, der Verschlüsse verwendet, ohne dass versuchen müssen, Daten sofort zu erstellen:
it('can generate the full name of a user', function (User $user) { expect($user->full_name)->toBe("{$user->first_name} {$user->last_name}"); })->with([ fn() => User::factory()->create(['first_name' => 'Nuno', 'last_name' => 'Maduro']), fn() => User::factory()->create(['first_name' => 'Luke', 'last_name' => 'Downing']), fn() => User::factory()->create(['first_name' => 'Freek', 'last_name' => 'Van Der Herten']), ]);
Bitte beachten Sie den
Anruf, wir geben ihn annamespace 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 [ [fn(): User => User::factory()->player()->create()], [fn(): User => User::factory()->coach()->create()], [fn(): User => User::factory()->owner()->create()], ]; } }
Das obige ist der detaillierte Inhalt vonVerwendung eloquenter Fabriken mit Phpunit -Datenanbietern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!