Apr 9, 2020
0
Level 1
Test: CustomRequest + Validation
I want to write a Test, that:
1: Uses a CustomRequest class, with validation rules.
2: Write a test, that only test this classs.
3: I do not want to create a controller in this case.
4: I would prefer it to be a unit test, and not a features test.
app\Http\Requests\CustomRequest.php
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class CustomRequest 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 [
'name' => 'required|string|max:50',
'email' => 'nullable|email|max:50',
'age' => 'min:1|max:200'
];
}
}
tests\Unit\RequestValidationTest.php
<?php
namespace Tests\Unit;
use Tests\TestCase;
use App\Http\Requests\CustomRequest;
use Illuminate\Foundation\Testing\WithFaker;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Foundation\Http\FormRequest;
class RequestValidationTest extends TestCase
{
/**
* A basic test example.
*
* @return void
*/
public function testExample()
{
$request1 = CustomRequest::create(
'api/path/',
'POST',
[
'name' => 'sdfsfsdf',
'email' => '[email protected]',
'age' => 33
]
);
$request1->validate(); /* This doesnt work? */
$request1->validateResolved(); /* This doesnt work? */
/* GOAL: This is supposed to dump the validated, but it doesn't work'*/
dump('Validated array', $request1->validated() );
$this->assertTrue(true);
}
}
Please or to participate in this conversation.