PHPnews.io

★ Asserting valid and invalid requests in Laravel

Written by murze.be / Original link on Oct. 12, 2021

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:

publicfunctiontest_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:

publicfunctiontest_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.

murze

« Shared Data - Introducing up-to 16 Times Faster Easy Coding Standard »