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

masteringlaravel logo
Laravel Code Review

Get expert guidance in a few days with a Laravel code review

Visit Laravel Code Review

The latest

View all →
Major performance improvements & security patches for Filament v4.12 and v5.7! image

Major performance improvements & security patches for Filament v4.12 and v5.7!

Read article
Laravel Boost Project Rules: Teach Agents Your Conventions image

Laravel Boost Project Rules: Teach Agents Your Conventions

Read article
Extract an Image's Dominant Color in Laravel image

Extract an Image's Dominant Color in Laravel

Read article
Image Dominant Color and HEIC Support in Laravel 13.24 image

Image Dominant Color and HEIC Support in Laravel 13.24

Read article
Official Laravel Zed Extension: LSP for PHP & Blade image

Official Laravel Zed Extension: LSP for PHP & Blade

Read article
Laravel Head: Manage Meta Tags, Open Graph, and JSON-LD image

Laravel Head: Manage Meta Tags, Open Graph, and JSON-LD

Read article