画竜点睛を衝く@mapyo

日々やった事をつらつらと書くブログです

Laravel5.1でphpunitで使うDBと開発で使うDBを分ける方法

Laravel5.1でphpunitで使うDBと開発で使うDBを分ける方法どうするのがいいのかー

ここでどうすればいいのかー。と思ってて、冷静に考えると、Database Connectionsをわざわざ追加する必要もなかった。

やり方はこうだ。

1. phpunit.xml環境変数DB_DATABASEを追加する

<env name="DB_DATABASE" value="hoge_test"/>

こうする事によって、phpunitを実行する時に、DB_DATABASE=hoge_testという環境変数が先に設定されて、.envが読み込まれた時に、既にその環境変数が設定されているので上書きされない。

これは、.envを読み込んで環境変数を設定する仕組みが、phpdotenvというライブラリが使われていて、このライブラリのソースと、これが実際に使われているソースを軽く時に、環境変数が既に設定されている場合は上書きされないというのがわかったから思いついた。

2. tests/TestCase.phpに追記する

    public function setUp()
    {
        parent::setUp();
        Artisan::call('migrate');
    }

    public function tearDown()
    {
        Artisan::call('migrate:reset');
        parent::tearDown();
    }

このような形で書けば、シンプルに出来ていいなぁと思ったー。