O que é Pest e para que serve?
\nPest é 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.
\nO 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.
\nPrincipais 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
Instalação do Pest
\nO 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.
\nCrie um novo projeto ou vá para o diretório raiz de um projeto existente:
\nmkdir my-pest-project\ncd my-pest-project\ncomposer init --yes\nInstale o Pest como uma dependência de desenvolvimento (dev):
\ncomposer require pestphp/pest --dev\nApós a instalação, inicialize o Pest no seu projeto:
\n./vendor/bin/pest --init\nEste 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
Agora você pode executar os testes:
\n./vendor/bin/pest\nSe você estiver usando Laravel, instale o pacote adicional para melhor integração:
\ncomposer require pestphp/pest-plugin-laravel --dev\n\nInício rápido com exemplo de código
\nCrie o arquivo tests/ExampleTest.php:
<?php\n\ntest('basic assertion', function () {\n $result = 1 + 1;\n expect($result)->toBe(2);\n});\nExecute os testes:
\n./vendor/bin/pest\nVocê 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".
Sintaxe alternativa usando a palavra-chave it (mais legível para descrever o comportamento):
it('performs basic addition', function () {\n $sum = 2 + 3;\n expect($sum)->toEqual(5);\n});\n\nPrincipais métodos e funções do Pest
\nAbaixo estão 10 métodos e funções principais do Pest com descrição detalhada e exemplos.
\n\n1. test() — definição de teste
\nO que faz: Cria um novo teste. Esta é a função principal para definir um cenário de teste.
\nParâmetros:
\n- \n
string $description— descrição do teste (exibida no console). \n callabl