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(); }
このような形で書けば、シンプルに出来ていいなぁと思ったー。