もがき系プログラマの日常

もがき系エンジニアの勉強したこと、日常のこと、気になっている技術、備忘録などを紹介するブログです。

Inertia利用下でfeatureテストを書く

はじめに

こんにちは。

現在、Inertia利用下のプロジェクトでテストを書いてます。

書き方はそんな難しくないです。

本題

<?php

namespace Tests\Feature;

use Inertia\Testing\AssertableInertia;
use Tests\TestCase;

class ExampleControllerTest extends TestCase
{
    public function test_invoke(): void
    {
        $this->get('example')
            ->assertInertia(static fn (AssertableInertia $page)
                => $page->component('Example'));
    }
}

これで、/example へのテストを実行して Example Componentが呼び出されていることをテストできます。

ただ、ちょっとめんどくさいのが、 通常だと Inertiaのテストは js/Pages へ向けてテストを実行してしまいます。

それは vendor/inertiajs/inertia-laravel/config/inertia.php で設定されてます。

        'page_paths' => [

            resource_path('js/Pages'),

        ],

例えば、管理画面+ユーザー画面のように、同じレポジトリで複数サイトを扱う場合、 js/Admin/ js/Client/ のようにパスを分けてつかいたいと思います。

その場合は設定ファイルを上書きします。

$ php artisan vendor:publish --provider="Inertia\ServiceProvider" 

作成された config/inertia.php 上で以下のように変更すればOKです。

        'page_paths' => [
            resource_path('js/Admin/Pages'),
            resource_path('js/Client/Pages'),
        ],

終わりに

家族内でインフルエンザが流行してて怖いです....

簡単なものでしたが、以上です。