laravel-tdd-with-pest

star 136

Apply RED-GREEN-REFACTOR with Pest or PHPUnit; use factories, feature tests for HTTP, and parallel test runners; verify failures before implementation

jpcaparas By jpcaparas schedule Updated 11/3/2025

name: laravel:tdd-with-pest description: Apply RED-GREEN-REFACTOR with Pest or PHPUnit; use factories, feature tests for HTTP, and parallel test runners; verify failures before implementation

Laravel TDD (Pest/PHPUnit)

Write the test first. Watch it fail. Write minimal code to pass. Keep tests fast and realistic.

Test Runner

# Sail
sail artisan test --parallel

# Non-Sail
php artisan test --parallel

Prefer Pest (default in new Laravel apps). PHPUnit is fine if your project uses it.

RED – Write a failing test

  • Use model factories; avoid heavy mocking
  • Feature tests for HTTP/controllers; unit tests for pure services
  • Name tests by behavior

Example (feature):

it('rejects empty email on signup', function () {
    $response = $this->post('/register', [
        'name' => 'Alice',
        'email' => '',
        'password' => 'secret',
        'password_confirmation' => 'secret',
    ]);

    $response->assertSessionHasErrors('email');
});

Run and confirm it fails for the right reason.

GREEN – Minimal implementation

Write the simplest code to pass your failing test. No extras. No refactors.

REFACTOR – Clean up

Remove duplication, clarify names, extract small services. Keep tests green.

Guidelines

  • Every production change starts with a failing test
  • Watch failures; never skip the failing phase
  • Use factories/seeders for realistic data
  • Use DB transactions or refreshes in tests as needed
  • Keep tests deterministic; avoid sleeps in async flows

When stuck

  • If a test is hard to write, design is too coupled; extract a service or port
  • Prefer dependency injection; avoid static/global state
Install via CLI
npx skills add https://github.com/jpcaparas/superpowers-laravel --skill laravel-tdd-with-pest
Repository Details
star Stars 136
call_split Forks 0
navigation Branch main
article Path SKILL.md
More from Creator