もがき系プログラマの日常

もがき系エンジニアの勉強したこと、日常のこと、気になっている技術、備忘録などを紹介するブログです。

Laravelのテストで初回にSeeder読み込みをしたい

はじめに

こんばんは。

またまたLaravelネタです。

RefreshDatabase$seedプロパティ or $seederプロパティ を使います。

公式にも記載があります。

readouble.com

本題

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コマンドでマイグレーション実行したりしてたので、これでめっちゃシンプルになりました。

現場からは以上です。