LoginSignup
17

More than 5 years have passed since last update.

ゲストOSで実行するphpunitのテストコードをPhpStormでブレークポイント設定する

Posted at

本投稿で対象となる環境は、ホストOSのPhpStormでテストコードを書き、それらのコードをVagrantのvm.synced_folderでマウントして、ゲストOSでphpunitを実行しているような環境です。

テストコードでError、Faultになったとき、デバッグの一手段としてブレークポイント設定ができると作業が捗ります。

本投稿のIPアドレスとポートは以下の通り。

ホストOSのIPアドレス 192.168.33.1
ゲストOSのIPアドレス 192.168.33.30
xdebugのポート 9000

PhpStormのPHP Servers設定

PhpStorm PreferenceのServersを追加します。

設定画面

kobito.1407665573.276452.png

設定値は

Name laravel_server_name (任意) ← phpunitを実行するときに利用する
Host 192.168.33.30
Port 9000
Debugger Xdebug
Use path mappings チェックする

パスのマッピング

また、上記設定画面でテストコードのパスマッピングを設定します。ホストOSのファイル毎にゲストOSの絶対パスを設定できます。ブレークポイントを設定したいコードはゲストOSの絶対パスを設定してください。

上記画面ではPhpStormプロジェクト(ホストOS)の app/tests/ExampleTest.php をゲストOSの絶対パス /vagrant/laravel/app/tests/ExampleTest.php に設定しています。
ExampleTest.phpはlaravelに含まれているサンプルのテストコードです。

PhpStormのPHP Debug設定

PhpStorm PreferenceのDebugでxdebugの設定を行います。

設定画面

kobito.1407668027.932548.png

Xdebugの設定値

Debug port 9000
Can accept external connections チェックする
Force break at the first line when no path mapping spceified 任意
Force break at the first line when a script is outside the project 任意

PhpStormのブレークポイント設定

メニュー「Run」「Toggle Line Breakpoint」でブレークポイント設定をできます。またエディタの左端をクリックすることで切り替えることも可能です。ブレークポイントを設定するファイルは必ずパスのマッピングを行っておいてください。

kobito.1407671470.163906.png

phpunitの実行

PhpStormを接続待ち状態に変更する

メニュー「Run」「Start Listen for PHP Debug Connections」でxdebugの接続待ち状態になります。

ゲストOSのターミナルでphpunitを実行する

$ XDEBUG_CONFIG="on" PHP_IDE_CONFIG="serverName=laravel_server_name" phpunit

XDEBUG_CONFIGは何でも良いので値をセットするとxdebugの接続を行うようです。
PHP_IDE_CONFIGが重要で、本投稿ではserverName=laravel_server_nameと設定していますが、このlaravel_server_nameは先ほどPhpStormのPHP Serversで設定したNameの値です。

xdebugの接続が正常に行われ、ブレークポイントを設定したパスのマッピングが問題なければ、次の画面のようにPhpStormでブレークしているはずです。
ステップ実行やスーパーグローバル・ローカル変数の書換が可能です。

kobito.1407671409.530058.png

ゲストOSのxdebug設定

おまけです。
php.iniに設定しているxdebugの設定値です。

xdebug.collect_params = 4
xdebug.dump.GET = "*"
xdebug.dump.POST = "*"
xdebug.remote_enable = 1
xdebug.remote_host = "192.168.33.1"

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
17