はじめに
こんばんは。
またまた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コマンドでマイグレーション実行したりしてたので、これでめっちゃシンプルになりました。
現場からは以上です。