はじめに
こんばんは。
またまたLaravelネタです。
RefreshDatabase
と $seedプロパティ or $seederプロパティ
を使います。
公式にも記載があります。
本題
tests/TestCase.php
<?php namespace Tests; use Illuminate\Foundation\Testing\RefreshDatabase; use Illuminate\Foundation\Testing\TestCase as BaseTestCase; abstract class TestCase extends BaseTestCase { use CreatesApplication; use RefreshDatabase; protected string $seed = true; }
$seedプロパティ
を trueで指定すると Database\Seeders\DatabaseSeeder
を実行してくれます。
<?php namespace Tests; use Illuminate\Foundation\Testing\RefreshDatabase; use Illuminate\Foundation\Testing\TestCase as BaseTestCase; abstract class TestCase extends BaseTestCase { use CreatesApplication; use RefreshDatabase; protected string $seeder = \Database\Seeders\TestCaseSeeder::class; }
$seederプロパティ
に 特定のSeederを指定することで対象のSeederを実行してくれます。
終わりに
コレ全然知らなかったです。。。
今までは BaseTestCaseの setupをオーバライドして、 if (! $this->app) {
内で 無理やり artisanコマンドでマイグレーション実行したりしてたので、これでめっちゃシンプルになりました。
現場からは以上です。