LoginSignup
0
0

Docker laravel APP_ENVをtestingに指定しているのにdevelopmentでPHPUnitのテストコードが実行される

Last updated at Posted at 2023-12-09

概要

  • Dockerでローカル開発環境を作成したlaravel環境にてPHPUnitを使ってFeatureテストを実行したところ何故かAPP_ENVdevelopmentで実行されてしまう問題が発生し詰まったので簡単に原因をまとめる。

状況

  • .env.testingを用意して記載を行った。

  • 下記コマンドを実行しUnit、Featureそれぞれのテストを実行した。

    php artisan test --env=testing
    
  • 実行されているテストコードの中にdd(app()->environment());のコードを仕込んでテストを実行したところdevelopmentという文字列が出力された。(本当はtesting)と出力されてほしい。

  • APP_ENVtestingになっていないと.env.testingが読み込まれずテスト用の設定でテストコードが実行されない場合がある。(ただし、--env=testingのように設定しているため、.env.testingは一応読み込まれているようだった。しかし.envに合って.env.testingに存在しない定数設定は.envのものが残ってしまうようだ。おそらくコンテナはdevelopmentという環境で起動しているから先に.envが読まれ、テスト実行時に--env=testingが指定されているから.envの設定項目を.env.testingの内容で上書きしてからテストを実行していた模様。今回.envにはstripeのapiキーが設定され.env.exampleにはキーの記載すら行っていなかったためテストコードを実行し.envに記載されたstripeのキー設定が生きた状態でテストコードが実行されていることに気が付き発覚した。)

原因と解決

  • ローカル開発環境のdocker-compose.ymlを確認したところapiサービスで下記のような定数を設定していた。

    environment:
        - APP_ENV=development
    
  • コンテナ起動時にAPP_ENVをdevelopmentとして起動してしまっているため、このようなことが起きている模様。

  • 取り急ぎ当該のdocker_compose.ymlの内容を削除し、再び同様のコマンドでテストを実行したところAPP_ENVtestingとして出力された。

0
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
0
0