この記事で解決できる悩み
いずみ
こんな悩みを解決できる記事を書きました!
僕は現役フリーランスエンジニア(歴9年)で、資格は13個保有しています。
結論、LaravelのPHPUnitでValidationのテストをする方法は非常に簡単です。
本記事を読めば、LaravelのPHPUnitでValidationのテストをする方法について理解できるので早速見ていきましょう!
すぐ読み終わるので、ぜひ最後まで読んでくださいね♪
目次
LaravelのPHPUnitでValidationのテストをする方法
早速ですが、LaravelのPHPUnitでValidationのテストをする方法を解説します。
STEP
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ファイルを用意します。
STEP
ユニットテスト用ファイルの作成
<?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],
];
}
}
↑のようなユニットテスト用ファイルを作成します。
STEP
PHPUnitを実行
phpunit
テストを実行して問題なければOKです。
まとめ
今回は、LaravelのPHPUnitでValidationのテストをする方法について解説しました。
- おすすめ本
Laravelの勉強なら「PHPフレームワーク Laravel入門 第2版
最後までお読みいただき、ありがとうございました!
- クソおすすめ本
海外のエンジニアがどういった思考で働いているかが理解できます。
海外に行く気はないけど海外エンジニアの動向が気になる雑魚エンジニアにおすすめです(本当におすすめな本しか紹介しないのでご安心を)。