News

Brainstorm Tests With PEST Todos 🔥

Published
Brainstorm Tests With PEST Todos 🔥 image

The @laracasts Twitter account shared a fantastic tip for brainstorming your tests with Pest PHP:

I love how a Pest test file feels like a scratch pad, and you can quickly riff on ideas as you think of them quickly. The less friction between the idea and test scaffolding, the better!

Take the default feature ExampleTest.php file in a Laravel project using Pest, for example:

it('returns a successful response', function () {
$response = $this->get('/');
 
$response->assertStatus(200);
});
 
it('requires a valid email')->todo();
it('detects Gmail addresses with a "+" as a non-unique email.')->todo();
it('requires a strong password')->todo();

When you run the pest CLI, you'll get helpful todo's that you can start to work on as you code:

Better yet, as mentioned in the tip, use the --dirty flag to only run the modified tests:

What if you are using PHPUnit class-based tests?

If you were to write something similar in a PHPUnit class-based test, it would take much more boilerplate:

namespace Tests\Feature;
 
use Tests\TestCase;
 
class ExampleTest extends TestCase
{
/**
* A basic test example.
*/
public function test_the_application_returns_a_successful_response(): void
{
$response = $this->get('/');
 
$response->assertStatus(200);
}
 
/** @test */
public function it_requires_a_valid_email()
{
$this->markTestIncomplete('requires a valid email');
}
 
/** @test */
public function it_detects_gmail_address_with_a_plus_as_non_unique()
{
$this->markTestIncomplete('detects Gmail addresses with a "+" as a non-unique email.');
}
 
/** @test */
public function it_requires_a_strong_password()
{
$this->markTestIncomplete('requires a strong password');
}
}

If we run the PHPUnit version, we don't get much output:

$ phpunit
 
..III 5 / 5 (100%)
 
OK, but there are issues!
Tests: 5, Assertions: 2, Incomplete: 3.

Thankfully, if you are using PHPUnit with class-based tests, you can at least use artisan test to get Laravel's formatter:

Thanks to @laracasts for the 🔥 tip!

Paul Redmond photo

Staff writer at Laravel News. Full stack web developer and author.

Sponsored

acquaintsoft logo
Acquaint Softtech

Hire Laravel developers with AI expertise at $20/hr. Get started in 48 hours.

Visit Acquaint Softtech

The latest

View all →
Mercure Broadcasting in Laravel 13.32 image

Mercure Broadcasting in Laravel 13.32

Read article
Super Stack: Laravel Starter Kit With Filament and NativePHP image

Super Stack: Laravel Starter Kit With Filament and NativePHP

Read article
Laravel MCP 1.0 Is Released image

Laravel MCP 1.0 Is Released

Read article
Laravel Vet: Review Composer Code Before It Installs image

Laravel Vet: Review Composer Code Before It Installs

Read article
What's New in PHP 8.6 image

What's New in PHP 8.6

Read article
Building EasyReply: How We Used Laravel to Unify Customer Support image

Building EasyReply: How We Used Laravel to Unify Customer Support

Read article