📊 Capítulo 16: Testes com Pest PHP
Especialização Backend com PHP & Laravel
🗺️ A Pirâmide de Testes Expressiva com Pest PHP
flowchart TD
UNIT["1. Testes Unitários Expressivos (Pest it() & test())\n- Testam cálculos, DTOs e Services isolados"]
--> HTTP["2. Testes de Feature de API (Pest HTTP)\n- ->getJson('/api/v1/produtos')->assertOk()->assertJsonStructure(...)"]
--> DB_TEST["3. Testes com RefreshDatabase\n- Roda todas as migrations e executa rollback automático a cada teste!"]
style UNIT fill:#e8f5e9,stroke:#4caf50,stroke-width:2px
style HTTP fill:#fff3e0,stroke:#ff9800,stroke-width:2px
style DB_TEST fill:#ede7f6,stroke:#512da8,stroke-width:2px
🎯 Slide 1: A Sintaxe Expressiva do Pest PHP
use App\Models\Usuario;
use function Pest\Laravel\{getJson, postJson, actingAs};
it('permite que um usuário autenticado crie um produto', function () {
$user = Usuario::factory()->create();
actingAs($user)
->postJson('/api/v1/produtos', [
'nome' => 'Monitor 4K',
'preco' => 1999.90,
'sku' => 'MON-4K-01',
])
->assertCreated()
->assertJsonPath('data.nome', 'Monitor 4K');
});
🎯 Slide 2: Mocking de Filas, E-mails e Eventos
Queue::fake();
Event::fake();
// Dispara endpoint...
Queue::assertPushed(ProcessarNotaFiscalJob::class);
Event::assertDispatched(PedidoPagoEvent::class);
🎯 Slide 3: Datasets & Testes Parametrizados
- O Pest permite rodar o mesmo teste com dezenas de combinações de dados inválidos usando
->with([...])de forma ultra-limpa e concisa!
Slide 1 de 1
Atalhos: ← → Navegar • Espaço Avançar • F Tela Cheia • Home Início • End Fim