share facebook facebook facebook twitter twitter menu hatena pocket slack

2021.04.05 MON

VSCodeでLaravel Sailで作成したプロジェクトのテストが実行できるようにする

甲斐 甲

WRITTEN BY 甲斐 甲

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の設定が切り替えできるので、そのファイルに拡張機能の設定を追加します。

.vscode/settings.json

{
    "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を編集します。

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

元記事はこちら

VSCodeでLaravel Sailで作成したプロジェクトのテストが実行できるようにする

甲斐 甲

甲斐 甲

2018/7にJOIN。 最近の好みはサーバレスです。なんでもとりあえず試します。

cloudpack

cloudpackは、Amazon EC2やAmazon S3をはじめとするAWSの各種プロダクトを利用する際の、導入・設計から運用保守を含んだフルマネージドのサービスを提供し、バックアップや24時間365日の監視/障害対応、技術的な問い合わせに対するサポートなどを行っております。
AWS上のインフラ構築およびAWSを活用したシステム開発など、案件のご相談はcloudpack.jpよりご連絡ください。