Laravel Sailで作成したプロジェクトだと./vendor/bin/sail test
コマンドでテスト実行できますが、テストコードの実装中はメソッド単位でテストしたいので、VSCodeの拡張機能を利用してみました。
前提
こちらの手順で手元にLaravel Sailで作成したプロジェクトがクローンされており、Dockerコンテナが実行されている環境となります。
今回の手順はGitHubリポジトリでも確認できます。
VCodeに拡張機能をインストールする
こちらの拡張機能が利用できます。
PHPUnit - Visual Studio Marketplace
https://marketplace.visualstudio.com/items?itemName=emallin.phpunit
プロジェクト直下に.vscode/settings.json
ファイルを作成することでワークスペースごとにVSCodeの設定が切り替えできるので、そのファイルに拡張機能の設定を追加します。
{
"phpunit.command": "vendor/bin/sail exec laravel.test",
"phpunit.phpunit": "vendor/bin/phpunit"
}
PHPUnit - Visual Studio Marketplace
https://marketplace.visualstudio.com/items?itemName=emallin.phpunit
VSCodeでプロジェクト単位の拡張機能を設定する - Qiita
https://qiita.com/k_bobchin/items/717c216ddc29e5fbcd43
docker-compose.yml
の編集とコンテナ再起動
VSCodeの拡張機能からDockerコンテナ内でテスト実行する場合、対象となるソースファイルを絶対パスでパラメータ指定されます。そのため、コンテナ内でPHPUnitが絶対パスが参照できないと実行できないので、docker-compose.yml
を編集します。
services:
laravel.test:
build:
context: ./vendor/laravel/sail/runtimes/8.0
dockerfile: Dockerfile
args:
WWWGROUP: '${WWWGROUP}'
image: sail-8.0/app
ports:
- '${APP_PORT:-80}:80'
environment:
WWWUSER: '${WWWUSER}'
LARAVEL_SAIL: 1
volumes:
- '.:/var/www/html'
+ - '$PWD:$PWD'
(略)
laravel.test
コンテナのvolumes
に'$PWD:$PWD'
を追加して、絶対パスが参照できるようにしました。
docker-compose.yml
を編集したらコンテナを再起動します。
docker-compose.yml
を編集したらコンテナを再起動します。sail restart
コマンドだと追加した設定が反映されないのでstop
してからup -d
します。
> ./vendor/bin/sail stop
> ./vendor/bin/sail up -d
動作確認
拡張機能のインストールと設定ができたらプロジェクトに含まれているテスト(tests/Feature/AuthenticationTest.php
)を実行してみます。
無事にDockerコンテナ内でテストが実行できました。
やったぜ
参考
PHPUnit - Visual Studio Marketplace
https://marketplace.visualstudio.com/items?itemName=emallin.phpunit
VSCodeでプロジェクト単位の拡張機能を設定する - Qiita
https://qiita.com/k_bobchin/items/717c216ddc29e5fbcd43