『自由力』を身に付けるサイト「リバトレ」も見てね!!

【Laravel】PHPUnitでValidationのテストをする方法!

悩んでいる男の子

PHPUnitでValidationのテストをしたいんだけど、どうしたらいいのかな?
具体的なソースコードもあると嬉しいな~。

こんな悩みを解決します。

  • 本記事の内容
  • PHPUnitでValidationのテストをする方法
  • 具体的な手順とソースコード
  • 本記事の執筆者
プロフィール
どこの写真だよ
  • 長身ガリガリ自称イケメン(1993/4/1生)
  • 元エンジニア(歴7年)、資格保有数約20個(IT系以外も含む)
  • 副業(物販)5か月目で月利30万円⇒脱サラ
  • 物販、システム開発、アフィリエイト、投資を細々とやっています。
  • 物販は彼女と楽しみながらやってます!

今回は、LaravelのPHPUnitでValidationのテストをする方法を解説します

いずみん

すぐ終わるので、最後まで読んでみてください!

目次

まずはRequestsファイルを作成

<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class UserRequest extends FormRequest
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return false;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
            'username' => 'required|max:100',
        ];
    }
}

Requestsファイルを作成しました。

ユーザ名という項目に対して、「必須チェック」と「最大文字数チェック」のバリデーションが付いています。

ユニットテスト用ファイルの作成

<?php

namespace Tests\Unit\Requests;

use App\Http\Requests\UserRequest;
use Tests\TestCase;
use Illuminate\Foundation\Testing\WithFaker;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Support\Facades\Validator;

class UserRequestTest extends TestCase
{
    /**
     * バリデーションテスト
     *
     * @param 項目名
     * @param 値
     * @param 期待値
     *
     * @dataProvider dataprovider
     */
    public function testBasicTest(string $item, string $data, bool $expect): void
    {
        $request  = new UserRequest();
        $rules    = $request->rules();
        $dataList = [$item => $data];

        $validator = Validator::make($dataList, $rules);
        $result    = $validator->passes();

        $this->assertEquals($expect, $result);
    }

    /**
     * データプロバイダ
     *
     * @return データプロバイダ
     *
     * @dataProvider dataprovider
     */
    public function dataprovider(): array
    {
        return [
            'expect'   => ['username', 'ユーザ名', true],
            'required' => ['username', null, false],
            'required' => ['username', '', false],
            'max'      => ['username', str_repeat('a', 101), false],
            'max'      => ['username', str_repeat('a', 100), true],
        ];
    }
}

ユニットテスト用ファイルです。

PHPUnitを実行

phpunit

テストを実行して問題なければOKです!

まとめ

今回は、LaravelのPHPUnitでValidationのテストをする方法を解説しました

バリデーションのテストも意外と簡単でしたね。

ではまた!

  • おススメ本はこちら!
いずみん

僕は↓の本でLaravelの勉強をしました!
非常に分かりやすいので是非!

この記事が気に入ったら
フォローしてね!

シェアするんやで!

~ リバトレ ~

お金や副業に関する情報を発信しているよ!

この記事を書いた人

いずみんのアバター いずみん 自由力発信おじ

【自由力発信】うさんくさ笑 | 副業物販で5ヶ月目に月利30万円達成⇨脱サラ予定 | 物販(アパレルせどり)・アフィリエイト・投資で自由になるための情報を発信中?笑 | 元エンジニア | 保有資格約20個

関連記事

コメント

コメントする

目次
閉じる