1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Laravelのテスト用接続先データベースを切り替える

Last updated at Posted at 2021-07-15

経緯

TDDを使ってLaraveで開発する。
開発環境でちょくちょくテストを動かすことになるが、
テスト実行しているとデータベースが汚れてしまう。(*1)
このためテストだけのデータベースを別にしたい。

設定

データベースを2つ用意
ひとつは mydev
もうひとつは mydev_testing
ユニットテストでは mydev_testing データベースを使う。

やりかた .envを2つ作る方式でやる

通常の開発用の設定は .envファイルに記述。
ユニットテストでは .env.oreore_testing ファイルに記述。
Laravelのプロジェクトルートにある
.envをコピーして .env.oreore_testing ファイルを作る。
.env.oreore_testingのデータベース接続先を mydev_testing に変更する。

phpunit.xmlを変更

APP_ENVのところにテスト設定ファイルの後ろの部分を記述。
こんな感じ

    <php>
・・・中略・・・
        <server name="APP_ENV" value="oreore_testing"/>
・・・中略・・・
    </php>

追記 2021/10/27

Laravel 6.20の環境でphpunit.xmlのAPP_ENVをoreore_testingに切り替えたら、Session is missing expected key エラーが出た。
phpunit.xmlの
bootstrap="tests/bootstrap.php"

bootstrap="vendor/autoload.php"
に切り替えて、エラーを回避した。

注 *1
use DatabaseTransaction;を使うとテストが終わった時にrollbackするので、データベース汚れないですが、
テスト実行終了時にどんなデータが残ってたか確認できないと開発やりにくいから、use DatabaseTransaction;は使わない。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?