技術ブログPhpStorm+Docker+PHPUnitでのデータベースを使用したテストについて気がつけば前回の投稿より数ヶ月空いてしまいました。今回はタイトルにある通りDocker環境下でPHPUnitを実行した際にデータベースを使用したテストでつまづいた点を備忘録として紹介したいと思います。構成2023年5月20日時点での環境を以下の通り示します。v2.17.3コンテナ構成Dockerコンテナの構成を以下の通り示します。known」のエラーが発生が発生し、PHPUnitでデータベースへ接続できませんでした。解決方法(試したこと)PhpStormの設定が悪いのではないかと思い、PhpStormの内容を確認しました。「PhpStorm」→「Settings...」→「PHP」→「テストフレームワーク」にPHPUnitnの設定があるのでそちらを確認してみることにしました。するとローカル環境を参照していることに気づきました。(下図参照)そこで「+」ボタンをクリックし、「リモートインタープリターによるPHPUnit」を選択して設定を追加しました。インタープリターは「Docker」内のPHPを使用するように設定しました。この設定でPhpStormからPHPUnitを実行かけてみたところ上述のエラーが発生してしまいました。それはそのはずで何も考えずに「Docker」を選択してしまったことで、phpコンテナしか参照されずmysql_testコンテナの参照ができていなかったためです。Compose」を使用するのが正しいです。この設定でできるはずと思い、PhpStormからPHPUnitを実行かけてみたところまたまた上述のエラーが発生してしまいました。今度はphpunit側の設定が悪いのではないかとphpunit.xmlを確認しました。</php></phpunit>phpタグ内の内容についても悪くなく.env.testingもプロジェクトルートに存在していました。設定は悪くないと判断しテストコード内でデバッグし、envの中身をウォッチしました。nullと表示されていました。.env.testingも存在するのにどうして読み込まれていないかが分かりませんでした。そこでコンテナの再起動やコンテナのビルド等を行なってみましたが症状は変わりませんでした。--env=testingを使用してコマンドライン上でenv('DB_HOST')を確認したところこちらもnullが表示されました。config:cacheコマンドを使用してenvの内容を反映させることにしました。envの内容が反映されているか確認するためtinkerを使用して確認したところenvの内容が反映されていませんでした。config:clearをしていなかったことでした。config:cacheの順で反映するのが良さそうです。まとめPhpStorm+Docker+PHPUnit環境下でデータベース接続する際の設定は以下の通りだということがわかりました。Compose」を使用する。config:cacheの順で実行する。簡単なことでしたが、結構な時間を費やしました。終わりに弊社にお仕事を依頼したいお客様がいらっしゃいましたら、以下のフォームもしくはメールにてお気軽にお問い合わせ下さい。お気軽にお問い合わせください。お問い合わせお気軽にお問い合わせください。お気軽にお問い合わせください。