Pest para PHP: guía completa con ejemplos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

¿Qué es Pest y para qué sirve?

\n

Pest es un framework de pruebas moderno y elegante para el lenguaje PHP, creado por Nuno Maduro en 2021. A diferencia de soluciones tradicionales como PHPUnit, Pest ofrece una sintaxis más concisa y expresiva, inspirada en Jest (JavaScript) y RSpec (Ruby). Si PHPUnit es una "navaja suiza" para pruebas, Pest es un "bisturí" que permite escribir pruebas más rápido, de forma más limpia y con menos código repetitivo.

\n

El objetivo principal de Pest es hacer que el proceso de escribir pruebas sea lo más agradable e intuitivo posible. En lugar de clases y métodos con nombres largos, se utilizan closures y una interfaz fluida (fluent interface). Esto es especialmente útil para proyectos donde la velocidad de desarrollo y la legibilidad del código son importantes, como en startups, servicios API o al trabajar en equipo donde las pruebas no solo las escriben ingenieros de QA, sino también desarrolladores.

\n

Ventajas clave de Pest sobre PHPUnit:

\n
    \n
  • Concisión: Menos código para escribir la misma prueba.
  • \n
  • Legibilidad: Las pruebas parecen lenguaje natural (por ejemplo, expect($result)->toBeTrue()).
  • \n
  • Funciones integradas: beforeEach(), afterEach(), todo() y otras.
  • \n
  • Arquitectura: No requiere herencia obligatoria de TestCase.
  • \n
  • Ecosistema: Plugins para Laravel, Livewire, Mockery y otras herramientas populares.
  • \n
\n\n

Instalación de Pest

\n

Pest se instala a través de Composer, el gestor de paquetes estándar para PHP. Asegúrate de tener instalado PHP versión 8.0 o superior.

\n

Crea un nuevo proyecto o ve al directorio raíz de un proyecto existente:

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

Instala Pest como dependencia de desarrollo (dev):

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

Después de la instalación, inicializa Pest en tu proyecto:

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

Este comando creará la estructura básica:

\n
    \n
  • tests/ — directorio para las pruebas.
  • \n
  • tests/Pest.php — archivo con configuraciones globales (por ejemplo, uses()).
  • \n
  • phpunit.xml — archivo de configuración (Pest funciona sobre PHPUnit).
  • \n
\n

Ahora puedes ejecutar las pruebas:

\n
./vendor/bin/pest
\n

Si usas Laravel, instala el paquete adicional para una mejor integración:

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

Inicio rápido con un ejemplo de código

\n

Crea el archivo tests/ExampleTest.php:

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

Ejecuta las pruebas:

\n
./vendor/bin/pest
\n

Verás una salida verde con el mensaje PASS Tests\\ExampleTest. Observa que no usamos clases, métodos con anotaciones ni herencia. Simplemente la función test() y un closure. Esto es lo que se llama "pruebas modernas".

\n

Sintaxis alternativa usando la palabra clave it (más legible para describir comportamiento):

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

Métodos y funciones principales de Pest

\n

A continuación se presentan 10 métodos y funciones clave de Pest con descripción detallada y ejemplos.

\n\n

1. test() — definición de prueba

\n

Qué hace: Crea una nueva prueba. Es la función principal para definir un escenario de prueba.

\n

Parámetros:

\n
    \n
  • string $description — descripción de la prueba (se muestra en la consola).
  • \n
  • callabl
  • \n

Recommendations