WEBOPIXEL

LaravelのUnitTestでテスト時はデータベースを切り替える

Posted: 2018.09.06 / Category: PHP / Tag: ,

LaravelでUnitTestしたとき通常使用しているデータベースとテスト用のデータベースの切り替え方法をご紹介します。

Sponsored Link

データベースのコンフィグファイルにテスト用のコネクションを設定しましす。
ここではsqliteを使用します。databaseディレクトリにtest.sqliteを作成しておきます。

config/database.php

'connections' => [
	// ...
	'testing' => [
		'driver' => 'sqlite',
		'database' => database_path('test.sqlite'),
		'prefix' => '',
	],
],

次にテスト用のenvファイルを新たに作成します。
DB_CONNECTIONにコンフィグファイルで作成したコネクションを指定します。

.env.testing

DB_CONNECTION=testing

phpunit.xmlAPP_ENVtestingになっていることを確認します。

phpunit.xml

<php>
	<env name="APP_ENV" value="testing"/>
	<env name="CACHE_DRIVER" value="array"/>
	<env name="SESSION_DRIVER" value="array"/>
	<env name="QUEUE_DRIVER" value="sync"/>
</php>

Laravelの設定は以上です。

PhpStormの設定

PhpStormからPHPUnitを実行できるようにしてみましょう。
メニューからPreferencesを開き、Languages & Freamworks > PHP > Test Freamworksを選択。

PhpStormのUnitTest設定

Use Composer autoloaderにチェックしてPath to script:にはプロジェクトディレクトリのvendor/autoload.phpを指定します。
このままでは実行した際、設定したphpunit.xmlが読み込まれないので、Default configuration file:phpunit.xmlを指定しましょう。

以上で設定は完了です。
ファイルブラウザでテストファイルを右クリックしてRun xxxxx(PHP Unit)を選択して実行してみてください。

PhpStormでUniTestの実行