モデルを利用する - d-sazanami/laravel-jissenkaihatsu-v1 GitHub Wiki

本の内容

本を順番通り実行すると、前の「シーディングの利用」で、 people テーブルにid=1のデータが作成されている状態になる。 その状態で、「モデルを利用する」のコードでテストを実行すると、name=DUMMYのデータはid=1になりえない。

対応

MySQLに接続して、直接truncateする

1. WSLのターミナルから、DB接続

docker-compose exec laravel.test php artisan db --env=testing

mysql コンテナにアタッチして、mysql コマンドで直接見に行くと、日本語の文字表示が「????」になる。 artisanを使うことで、Laravelがいい感じに言語設定周りも面倒見てくれるらしく、日本語の文字も正しく表示されるので、artisan経由で接続する。

2. truncate

> truncate people;
> SELECT AUTO_INCREMENT FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'laravel_app_test' AND TABLE_NAME = 'people';
+----------------+
| AUTO_INCREMENT |
+----------------+
|           NULL |
+----------------+
1 row in set (0.02 sec)

そもそも

PHPUnitテストでデータの状態をテストする際に、テストケースには前提となるデータ状態はコードで指定する。今回は本の順番で、データをinsertする準備を説明してから、データを初期化を説明している都合、手動でtruncateしている。勉強用の環境でなければ、テスト環境のデータを手動でいじる事は普通は悪手である。

ref