Laravel6 PHPUnitテスト実行時に、前処理でseederを実行する
前提
- Larave6
- PHP7.4
- データベース作成済み
- マイグレーション作成済み
- シーダー作成済み
PHPUnitテストの前処理でseederを実行
use Illuminate\Support\Facades\Artisan; //Artisan::callを使うためにuse
class HogeTest extends TestCase
{
private static $isSetUp = false; // setUpを一度だけ実行するためのコード
protected function setUp():void //TestCaseのsetUpメソッドをオーバーライド
{
parent::setUp(); // 親クラスのメソッドを呼び出す
if(self::$isSetUp === false) {
Artisan::call('migrate:fresh --seed');
self::$isSetUp = true;
}
}
}
setUp
メソッドを定義したテストクラスの、最初のメソッド実行前に、
php artisan migrate:fresh --seed
コマンドを実行します。
parent::setUp()
は親のsetUp
メソッドの機能を使うために呼び出しています。
テストを実行
$ ./vendor/bin/phpunit tests
テスト実行するとデータベースにテストデータが挿入されます。
補足
setUpBeforeClass
でArtisan::call
が使えなかったため、代替案としてこの実装方法にしました。問題なく動作するのであれば今回実装したsetUpメソッドよりsetUpBeforeClass
で実装した方が良いかもしれません。
以下はどちらも、テストクラスで最初に実行されるメソッドの直前で一度だけ実行されます
setUpメソッド
private static $isSetUp = false;
protected function setUp():void
{
parent::setUp();
if(self::$isSetUp === false) {
self::$isSetUp = true;
}
}
setUpBeforeClassメソッド
public static function setUpBeforeClass(): void
{
}
参考
Author And Source
この問題について(Laravel6 PHPUnitテスト実行時に、前処理でseederを実行する), 我々は、より多くの情報をここで見つけました https://qiita.com/pomechan0505/items/288b3a7f4622e170d7fe著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .