Qué es Pest
Pest es un framework de tests construido sobre PHPUnit que se adopta por defecto en los proyectos nuevos desde Laravel 11. Aprovecha todas las aserciones de PHPUnit y añade una sintaxis concisa basada en closures. Principales diferencias con PHPUnit:Como los tests de Pest se ejecutan sobre PHPUnit, pueden convivir con tests PHPUnit existentes. Los ejecutas con
php artisan test o vendor/bin/pest.Cuándo usar describe / it / test
test()
La definición más sencilla. Usa el nombre del test como su descripción.
it()
Permite un estilo cercano al lenguaje natural, tipo «it should…».
describe()
Agrupa tests relacionados. Útil para compartir beforeEach() y organizar lógicamente los archivos.
Expectation API
expect() es la sintaxis de aserción propia de Pest. Permite encadenar condiciones.
Aserciones básicas
Aserciones sobre modelos
Cadena con and()
Verificar cada elemento con each()
Tests parametrizados con datasets
Para probar la misma lógica con varios valores, usadataset() o with() en línea.
Dataset en línea
Dataset con nombre
Define datasets en el directoriotests/Datasets.
Dataset dinámico con closures
Tests unitarios con Mockery
Mockear un servicio
Spy
Un spy ejecuta la implementación real y registra las llamadas.Mock parcial
Se mockean solo algunos métodos y el resto se usa con la implementación real.Pruebas de llamadas a APIs externas con HTTP fake
ConHttp::fake() puedes hacer stub de las respuestas sin enviar peticiones reales.
Fake básico
Probar respuestas de error
Simular fallos de red
Fakes de eventos, correos y notificaciones
Event::fake()
Mail::fake()
Notification::fake()
Pruebas de comandos Artisan
Comandos interactivos
RefreshDatabase y LazilyRefreshDatabase
RefreshDatabase
Hace rollback de la BD tras cada test para mantenerla limpia. Ejecuta las migraciones al inicio del test suite.
LazilyRefreshDatabase
RefreshDatabase comprueba migraciones en todos los tests, pero LazilyRefreshDatabase las difiere hasta que un test toca de verdad la BD. Acelera los suites con muchos tests que no usan BD.
Medición de cobertura de código
Requiere Xdebug o PCOV.Páginas relacionadas
Introducción a los tests
Consulta la forma estándar de escribir tests en Laravel y el uso de
php artisan test.