Asserting valid and invalid requests in Laravel

by Brent Roose – 1 minute read

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.

Share Post LinkedIn

Join thousands of developers

Every two weeks, I share practical tips, tutorials, and behind-the-scenes insights from maintaining 300+ open source packages.

No spam. Unsubscribe anytime. You can also follow me on X.

Found something interesting to share? Submit a link to the community section.