LoginSignup
3
2

More than 5 years have passed since last update.

JetBrains IDEでLaravel使うときのPHPUnit設定あれこれ

Posted at

JetBrains 製 IDE で Laravel を使う際に、PHPUnit の設定で躓きました。
なお、使っているのは IntelliJ IDEA (試用版)ですが、おそらく PhpStorm でも同じだと思います。

大前提

  • Laradock でプロジェクト作成済み
  • バージョン
    • Laravel
      • 5.7.19
    • PHP
      • 7.2.4

テスト実行しても DB 接続できない

前提

  • php artisan migrate でテーブル作成済み
  • テーブルからデータ取得するモデル作成済み

事象

モデルをテストするコードを書いて、IDE から実行すると、以下のメッセージが出ました。

PDOException : SQLSTATE[08006] [7] could not translate host name "postgres" to address: Name or service not known

ちなみに、プロジェクト名/.env は以下のように設定済みです。とくに問題はなさそうです。1

プロジェクト名/.env
DB_CONNECTION=pgsql
DB_HOST=postgres
DB_PORT=5432
DB_DATABASE=shopping
DB_USERNAME=default
DB_PASSWORD=secret

ところが、コンテナの中に入って、phpunit tests/ を実行してみると、問題なく動きました。
ここで IDE の設定を確認すると・・・
- Preference -> Language & Frameworks -> PHP -> CLI Interpreters

スクリーンショット 2018-12-25 11.37.06.png

PHP のバージョンを認識しているので問題なさそうに見えますが、実は、ここで Docker を選択していることが原因でした。

これを以下のように Docker Compose を選択するように修正すると、IDE からも正常にテスト実行することができるようになりました。

スクリーンショット 2018-12-25 11.43.30.png

副作用?

上記設定を実行したところ、テスト実行するたびに、コンテナが終了するようになりました。

Time: 1.7 seconds, Memory: 14.00MB

OK (4 tests, 4 assertions)
laradock_shop_workspace_1 exited with code 0
Aborting on container exit...

Process finished with exit code 0

IDE からコンテナ起動しようとすると、一旦起動するものの、すぐに終了してしまうので、少し不便です。ターミナルで docker-compose up -d nginx workspace とすると正常に起動するので実害はないかもしれませんが・・・。

検索すると、フォーラム で質問が上がっているのが見つかりました。どうやらテスト実行するたびにコンテナを起動して、コンテナ終了するのが現在の仕様だそうで 。回避策も載っているけど、どれも今ひとつな気が・・・。どなたか、いい方法ご存知でしたら、ご教示くださいませ。2

テスト結果を色付けしたい

躓いたわけではないのですが、意外と忘れがちなのでメモしておきます。

前提

PHPUnit では、デフォルトでは色付け表示されません。しかし、--colors オプションを付けることで色付けされるようになります。これと同じことを IDE でもやりたいと思いました。

設定方法

Laravel で作ったプロジェクトの中を見ると、PHPUnit の設定ファイル phpunit.xml があります。これを見ると、colors="true" とあり、色付け表示がすでに設定済みでした。

プロジェクト名/phpunit.xml
<?xml version="1.0" encoding="UTF-8"?>
<phpunit backupGlobals="false"
         backupStaticAttributes="false"
         bootstrap="vendor/autoload.php"
         colors="true"
         convertErrorsToExceptions="true"
         convertNoticesToExceptions="true"
         convertWarningsToExceptions="true"
         processIsolation="false"
         stopOnFailure="false">

ということで、IDE で phpunit.xml を読み込むように設定しました。
- Preference -> Language & Frameworks -> PHP -> Test Frameworks
- 「Default configuration file」に phpunit.xml のパスを設定します。

スクリーンショット 2018-12-25 12.03.46.png

まとめ

IDE の設定って、めんどくさいですね...


  1. 普通は mysql なのでしょうが、普通でないことをしたくて postgres にしました。今思えば止めとけば良かった(苦笑) 

  2. そもそも、おとなしくデフォルトの MySQL のままにしておけば問題ないのかもしれませんね。試してないから分かりませんが。 

3
2
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
3
2