I have store method in my controller like this
public function store()
{
request()->validate(['family'=>'required']);
User::create(request()->all());
return redirect('/users');
}
and test method like this
/** @test */
public function a_user_require_family()
{
$this->withoutExceptionHandling();
$this->post('/users', [])->assertSessionHasErrors('family');
}
It show me this:
1) Tests\Feature\UserTest::a_user_require_family
Illuminate\Validation\ValidationException: The given data was invalid.
You are using
assertSessionHasErrors('family')
which catches aValidationException
on the keyfamily
only if the key was passed in the request body and then failed your validation.But in your case you are not passing the said key at all (You send an empty body
[]
).You need to use
assertSessionMissing()
in this case.Try:
Laravel Documentation : https://laravel.com/docs/5.8/http-tests#assert-session-missing