Help us understand the problem. What is going on with this article?

Laravel でテスト〜準備編

More than 1 year has passed since last update.

この記事について

Laravel でプロジェクト始めるとき、あるいはテストを書き始める前にいじる、テスト関連の設定項目について列挙します。

必須ではないですが、データベースは開発用と別にするのがいいと思っていまして(何かで整合性が取れなくなったときに気軽につくり直せるように)、その場合はいくつかのファイルを変更する必要があるので、そこら辺について。

データベースを開発と共用する場合はなにも変更せずともすぐにテストを実行できるので、この記事に書かれていることは不要です。

はじめに

環境

  • MySQL: 5.7.20
  • Laravel: 5.5.44
  • PHPUnit: 6.5.8

詳細

データベース名、ユーザー名、などは適宜差し替えてください。

テスト用DBを作成して、適宜パーミッションやらなんやら設定しておきましょう。

create database homestead_testing default charset utf8mb4 collate utf8mb4_unicode_ci;
grant all on homestead_testing.* to 'homestead'@'localhost';

config/database.php に以下の配列を追加します。

config/database.php
        'mysql_testing' => [
            'driver' => 'mysql',
            'host' => env('DB_TESTING_HOST', '127.0.0.1'),
            'port' => env('DB_TESTING_PORT', '3306'),
            'database' => env('DB_TESTING_DATABASE', 'forge'),
            'username' => env('DB_TESTING_USERNAME', 'forge'),
            'password' => env('DB_TESTING_PASSWORD', ''),
            'unix_socket' => env('DB_TESTING_SOCKET', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'strict' => true,
            'engine' => null,
        ],

続いて .env (.env.testing でも可)に以下の行を追加

DB_TESTING_HOST=127.0.0.1
DB_TESTING_PORT=3306
DB_TESTING_DATABASE=homestead_testing
DB_TESTING_USERNAME=homestead
DB_TESTING_PASSWORD=secret

最後、phpunit.xml

phpunit.xml
diff --git a/phpunit.xml b/phpunit.xml
index bb9c4a7..c41b5dd 100644
--- a/phpunit.xml
+++ b/phpunit.xml
@@ -24,6 +24,7 @@
     </filter>
     <php>
         <env name="APP_ENV" value="testing"/>
+        <env name="DB_CONNECTION" value="mysql_testing"/>
         <env name="CACHE_DRIVER" value="array"/>

おわりに

テストの際にこんな設定もしてるよ、というのがあれば、データベース関連に限らずコメント欄にて教えていただけると助かります :bow:

nunulk
PHP, Laravel, オブジェクト指向プログラミング, デザインパターン, リファクタリング, 関数プログラミング, etc.
http://nunulk.hatenablog.com
phper-oop
ペチオブはオブジェクト指向ワーキンググループです。様々なエンジニアの方に参加頂いております。
https://phper-oop.connpass.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away