LoginSignup
9
10

More than 5 years have passed since last update.

PhpStormからLaradockのテストを実行する

Posted at

経緯

PHPカンファレンス2018でLaravelでTDDを体験しよう #phpcon2018がとても良くて、LaravelでTDDをしたいと思った。
(特にPhpStormからCommand + rで都度テスト実行をしたいと思った。)

TDDはリズムが大切というお話で、ライブコーディングでTDDのリズムを体感できる大変有用な内容だったが、
Homestead前提だったということもあり、実際にLaradock環境で0からやろうとすると設定で少しハマった。

備忘も兼ねてPhpStorm+Laradockでテスト実行する手順を記載した。

前提

PHPフレームワーク Laravel Webアプリケーション開発に記載された手順でLaradock環境が構築されていること。

Laravel:5.5.x
PhpStorm:2018.2.5

手順

ComposerでPHPUnitを最新にする

ターミナルでプロジェクトフォルダに移動し、php vendor/bin/phpunitを実行する。
上記でLaravelにデフォルトで存在するテストが動くか確認する。動けば問題なし。

もし動かない場合は、以下の手順を行う。
プロジェクトフォルダでrm -rf vendor/bin実行後に、composer installを実行。
これで再度php vendor/bin/phpunitを行えば動作するはず。

Dockerを設定する

ここからはPhpStormでテスト実行するための作業。

Command+,でPreferencesを開き、「Build, Execution, Development」→「Docker」で「+」を選択する。
自分はDocker for Macを利用しているのでそちらを選択すると「Connection successful」と表示された。
「Name」は適当。
image.png

 interpreterを指定する

引き続きPreferencesから「Languages & Frameworks」→「PHP」の「CLI Interpreter」の右にある「・・・」を選択する。
※画像は設定後の画像のため、少し異なるかも。
Untitled1.png

以下の画面が開いたら設定をしていく。
「Name」は適当。
「Remote」で「Docker」を指定。
「Image Name」を自動で検索してくれるので「laradock_workspace」を選択する。
(laradock_php-fpmでも動作するようなのだけど、どちらがいいのだろう?)

「PHP Executable」右端の更新ボタンを押すと、PHPとXdebugを自動で見つけてくれる。
バージョンが表示されればOK。
image.png

次が重要(というよりハマった)で、このままだと「Path Mapping」に→/optとなっており、次のPHPUnit設定で問題が発生する。
ここで「Docker Container」を「-v /Users/xxx/xxx/docker/プロジェクト名:/var/www/プロジェクト名」に指定する。
ホスト側のプロジェクトパスとコンテナ側のプロジェクトパスを合わせる作業となる。

Untitled1.png

PHPUnitを指定する

引き続きPreferencesから「Languages & Frameworks」→「PHP」の「Test Frameworks」で「+」から「PHPUnit By Remote Interpreter」を選択する。
「Use Composer autoloader」を選択し、「Path to script」にworkspaceコンテナのフルパスでautoload.phpで指定する。
PHPUnit versionが表示されればOK。(ここでエラーが出る場合は、interpreterの指定がうまくいっていない可能性が高い。)
Untitled3.png

Test実行に設定する

最後に「Run/Debug Configurations」にて「Defined in the configuration file」を選択し、
ホスト側のプロジェクトにあるphpunit.xmlを指定する。
Untitled4.png

これでPhpStormでCommand + rでテストが実行できるようになる。

9
10
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
9
10