Pest para PHP: guia completo com exemplos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

O que é Pest e para que serve?

\n

Pest é um framework de testes moderno e elegante para a linguagem PHP, criado por Nuno Maduro em 2021. Ao contrário de soluções tradicionais como PHPUnit, o Pest oferece uma sintaxe mais concisa e expressiva, inspirada em Jest (JavaScript) e RSpec (Ruby). Se o PHPUnit é um "canivete suíço" para testes, o Pest é um "bisturi" que permite escrever testes de forma mais rápida, limpa e com menos código repetitivo.

\n

O principal objetivo do Pest é tornar o processo de escrita de testes o mais agradável e intuitivo possível. Em vez de classes e métodos com nomes longos, você usa closures e uma interface fluente (fluent interface). Isso é especialmente útil para projetos onde a velocidade de desenvolvimento e a legibilidade do código são importantes, como em startups, serviços de API ou ao trabalhar em equipe, onde os testes são escritos não apenas por engenheiros de QA, mas também por desenvolvedores.

\n

Principais vantagens do Pest sobre o PHPUnit:

\n
    \n
  • Concisão: Menos código para escrever o mesmo teste.
  • \n
  • Legibilidade: Os testes parecem linguagem natural (por exemplo, expect($result)->toBeTrue()).
  • \n
  • Funções integradas: beforeEach(), afterEach(), todo() e outras.
  • \n
  • Arquitetura: Não requer herança obrigatória de TestCase.
  • \n
  • Ecossistema: Plugins para Laravel, Livewire, Mockery e outras ferramentas populares.
  • \n
\n\n

Instalação do Pest

\n

O Pest é instalado via Composer, o gerenciador de pacotes padrão para PHP. Certifique-se de ter o PHP versão 8.0 ou superior instalado.

\n

Crie um novo projeto ou vá para o diretório raiz de um projeto existente:

\n
mkdir my-pest-project\ncd my-pest-project\ncomposer init --yes
\n

Instale o Pest como uma dependência de desenvolvimento (dev):

\n
composer require pestphp/pest --dev
\n

Após a instalação, inicialize o Pest no seu projeto:

\n
./vendor/bin/pest --init
\n

Este comando criará a estrutura básica:

\n
    \n
  • tests/ — diretório para os testes.
  • \n
  • tests/Pest.php — arquivo com configurações globais (por exemplo, uses()).
  • \n
  • phpunit.xml — arquivo de configuração (o Pest funciona sobre o PHPUnit).
  • \n
\n

Agora você pode executar os testes:

\n
./vendor/bin/pest
\n

Se você estiver usando Laravel, instale o pacote adicional para melhor integração:

\n
composer require pestphp/pest-plugin-laravel --dev
\n\n

Início rápido com exemplo de código

\n

Crie o arquivo tests/ExampleTest.php:

\n
<?php\n\ntest('basic assertion', function () {\n    $result = 1 + 1;\n    expect($result)->toBe(2);\n});
\n

Execute os testes:

\n
./vendor/bin/pest
\n

Você verá uma saída verde com a mensagem PASS Tests\\ExampleTest. Observe que não usamos classes, métodos com anotações ou herança. Apenas a função test() e uma closure. Isso é o "teste moderno".

\n

Sintaxe alternativa usando a palavra-chave it (mais legível para descrever o comportamento):

\n
it('performs basic addition', function () {\n    $sum = 2 + 3;\n    expect($sum)->toEqual(5);\n});
\n\n

Principais métodos e funções do Pest

\n

Abaixo estão 10 métodos e funções principais do Pest com descrição detalhada e exemplos.

\n\n

1. test() — definição de teste

\n

O que faz: Cria um novo teste. Esta é a função principal para definir um cenário de teste.

\n

Parâmetros:

\n
    \n
  • string $description — descrição do teste (exibida no console).
  • \n
  • callabl

Recommendations