Asserting valid and invalid requests in Laravel
Testing a Laravel project is one of the most pleasant experiences I've ever had: there's a clean testing API, a very powerful layer added on top of testing frameworks; all while keeping the simplicity and eloquence you'd expect from a Laravel project.
Here's a great example of Laravel's powerful simplicity. Recently, an improved way to test whether a request has validation errors or not was added. You can now use assertValid
and assertInvalid
instead of assertSessionHasErrors
or assertJsonValidationErrors
:
public function test_post_validation()
{
$this
->post(
action(UpdatePostController::class),
[
'title' => null,
'date' => '2021-01-01',
'author' => 'Brent',
'body' => null,
],
)
->assertValid(['date', 'author'])
->assertInvalid(['title', 'body']);
}
It's even possible to check for specific validation errors:
public function test_post_validation()
{
$this
->post(/* … */)
->assertInvalid([
'title' => 'required',
'body' => 'required',
]);
}
It's these kinds of little details that make testing a Laravel project so much fun!
If you want to up your testing game, check out our complete course about Testing Laravel. It teaches you how to test a Laravel application, from a beginner to master level.
What are your thoughts on "Asserting valid and invalid requests in Laravel"?