【Laravel】Sailで構築したプロジェクトでテスト用のDBを作成する

やりたいこと

Laravel Sailで構築したプロジェクトでテスト用のDBを作成したい。

DBはmysqlを想定しています。

 

実装

1 .env.testingを作成する

.envファイルをコピーして.env.testingを作成します。

基本は.envファイルと同様の設定で問題ありませんが、DBの設定はテスト用に変更します。

.env.testing

.
.
.
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=テスト用データベース名
DB_USERNAME=root
DB_PASSWORD=
.
.
.

2 phpunit.xmlを編集する

phpunit.xmlにテスト用DBを設定します。

<php>
 <env name="APP_ENV" value="testing"/>
 <env name="BCRYPT_ROUNDS" value="4"/>
 <env name="CACHE_DRIVER" value="array"/>
 <server name="DB_DATABASE" value="テスト用データベース"/> // ここを追加
 <!-- <env name="DB_CONNECTION" value="sqlite"/> -->
 <!-- <env name="DB_DATABASE" value=":memory:"/> -->
 <env name="MAIL_MAILER" value="array"/>
 <env name="QUEUE_CONNECTION" value="sync"/>
 <env name="SESSION_DRIVER" value="array"/>
 <env name="TELESCOPE_ENABLED" value="false"/>
</php>

3 テスト用データベースを作成する

以下コマンドでmysqlに入ります。

mysql -h 127.0.0.1 -u root -P 3306 -p

以下コマンドでデータベースを作成します。

CREATE DATABASE テスト用データベース;

4 テストDB用のキーを作成する

以下コマンドで、テストDB用のキーを作成します。

./vendor/bin/sail artisan ket:generate --env=testing

 

以上でテスト用のDB作成は完了です。

テスト内でDBを使用してみてください。

 

以上!!!!!!!