経緯
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」は適当。
### interpreterを指定する
引き続きPreferencesから「Languages & Frameworks」→「PHP」の「CLI Interpreter」の右にある「・・・」を選択する。
※画像は設定後の画像のため、少し異なるかも。
以下の画面が開いたら設定をしていく。
「Name」は適当。
「Remote」で「Docker」を指定。
「Image Name」を自動で検索してくれるので「laradock_workspace」を選択する。
(laradock_php-fpmでも動作するようなのだけど、どちらがいいのだろう?)
「PHP Executable」右端の更新ボタンを押すと、PHPとXdebugを自動で見つけてくれる。
バージョンが表示されればOK。
次が重要(というよりハマった)で、このままだと「Path Mapping」に→/optとなっており、次のPHPUnit設定で問題が発生する。
ここで「Docker Container」を「-v /Users/xxx/xxx/docker/プロジェクト名:/var/www/プロジェクト名」に指定する。
ホスト側のプロジェクトパスとコンテナ側のプロジェクトパスを合わせる作業となる。
PHPUnitを指定する
引き続きPreferencesから「Languages & Frameworks」→「PHP」の「Test Frameworks」で「+」から「PHPUnit By Remote Interpreter」を選択する。
「Use Composer autoloader」を選択し、「Path to script」にworkspaceコンテナのフルパスでautoload.phpで指定する。
PHPUnit versionが表示されればOK。(ここでエラーが出る場合は、interpreterの指定がうまくいっていない可能性が高い。)
###Test実行に設定する
最後に「Run/Debug Configurations」にて「Defined in the configuration file」を選択し、
ホスト側のプロジェクトにあるphpunit.xmlを指定する。
これでPhpStormでCommand + r
でテストが実行できるようになる。