けこのアプリ開発奮闘記

アプリ開発で得た知見を共有していきます。なるべく文章が堅くならないように意識しています。

【PHP】Laravelにおけるテスト手順、勉強メモ

こんばんは、けこです。
今日は先日作ったsailによるLaravel環境のテストを試してみました!
php artisan互換のコマンドがsailで使えるのはありがたい!せっかくなので今回はsailコマンドで進めていきます。

前提

docker基本知識、下記リンクのOS別Laravel導入を終えていること。

インストール 8.x Laravel

~/.zshrc にエイリアスを記載済み

alias sail="./vendor/bin/sail"
テスト実行
sail test

でプロジェクトのtestsフォルダ内のFeature, Unitフォルダにあるテストメソッドを実行可能。php artisan testでも可。

testファイルの作り方

{プロジェクト名}/tests/Feature/UserTest.phpを作る場合、削除する場合は手動で対応しましょう。

sail artisan make:test UserTest

このようなコードが生成されるので、getメソッドの引数//userに変更します。

<?php

namespace Tests\Feature;

use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Foundation\Testing\WithFaker;
use Tests\TestCase;

class UserTest extends TestCase
{
    /**
     * A basic feature test example.
     *
     * @return void
     */
    public function test_example()
    {
        #$response = $this->get('/'); 削除
        $response = $this->get('/user');

        $response->assertStatus(200);
    }
}

/userというルーティングは作られていないので失敗してしまいます。

f:id:keko5342:20211130221609p:plain
実行結果

ルーティングを加えて成功させる

/routes/web.phpに/userへのルーティングを追記、今回はルーティングのみの検証ということでviewは省略。

<?php

use Illuminate\Support\Facades\Route;

/*
コメント略
*/

Route::get('/', function () {
    return view('welcome');
});

Route::get('/user', function () {
    return 'user page';
});
再実行

sail test 無事成功、テストを作る時に必要なコーディングのほとんどを自動生成してくれるのでとても楽ですね!

f:id:keko5342:20211130225158p:plain
テスト成功!

最後

本日は以上となります、APIの値の検証やViewのテストなどもっと深掘りできると思うのでおいおい勉強してまとめていきます!