Skip to main content

¿Qué son las pruebas?

Las pruebas son un mecanismo automatizado para verificar que el código funciona como se espera. Al escribirlas puedes comprobar rápidamente si los cambios rompen algo del comportamiento existente. En un equipo, tener pruebas da confianza para modificar y revisar el código. Laravel incluye soporte de pruebas de fábrica y admite tanto Pest como PHPUnit. Al instalar el proyecto ya vienen preparados el archivo de configuración phpunit.xml y el directorio tests/.
Pest se construye sobre PHPUnit y permite escribir pruebas con una sintaxis más concisa y legible. Si empiezas ahora, es recomendable elegir Pest.

Estructura del directorio tests/

  • Feature/ — Pruebas de funcionalidad. Sirven para pruebas de mayor tamaño que incluyen solicitudes HTTP. Cubren la integración entre varios objetos o endpoints de API. La mayoría de tus pruebas irán aquí.
  • Unit/ — Pruebas unitarias. Sirven para pruebas pequeñas de una clase o método. La aplicación Laravel no se arranca, así que no puedes usar la base de datos ni otras funcionalidades del framework.

Crear una prueba

Crea una nueva clase de prueba con el comando Artisan make:test.
Se genera tests/Feature/TodoTest.php.

Ejecutar las pruebas

Ejecuta las pruebas con php artisan test.
También puedes ejecutar vendor/bin/pest o vendor/bin/phpunit directamente, pero php artisan test ofrece un formato de salida más legible. Para ejecutar una suite concreta usa opciones.

Prueba básica

Ejemplo simple de aserciones.

Aserciones habituales

Pruebas HTTP

Las pruebas HTTP de Laravel simulan solicitudes a rutas sin necesidad de arrancar un servidor real. Es una funcionalidad potente disponible en las pruebas de Feature/.

Comprobar que una página se muestra

Con get() envías una solicitud GET y verificas la respuesta.

Ejemplo de pruebas HTTP de una app ToDo

Con un modelo Todo, probamos cada operación CRUD.

Aserciones habituales de respuesta

El trait RefreshDatabase reinicia la base de datos tras cada prueba. Sirve para evitar interferencias entre pruebas.

Entorno de pruebas

Configuración de phpunit.xml

Configura el entorno de pruebas en phpunit.xml en la raíz. Por defecto se usan drivers array para sesión y caché, evitando que queden datos entre pruebas.
Para la base de datos es habitual usar SQLite en memoria, que no deja archivos.

Archivo .env.testing

Si creas .env.testing en la raíz, se lee en lugar de .env al ejecutar pruebas. Es útil para separar la configuración de conexión o de servicios externos para pruebas.
Si tienes caché de configuración, ejecuta php artisan config:clear antes de las pruebas. De lo contrario podría usarse una caché antigua.

Ejecución en paralelo

Cuando hay muchas pruebas, el tiempo se alarga. Con --parallel puedes ejecutar en varios procesos a la vez y reducir el tiempo. Primero instala el paquete brianium/paratest.
Después ejecuta con la opción --parallel.
Por defecto usa tantos procesos como núcleos de CPU. Indica el número con --processes.
Con pruebas en paralelo, cada proceso debe usar una base de datos independiente. RefreshDatabase combinado con SQLite en memoria de phpunit.xml funciona sin problemas.

Próximos pasos

Pruebas HTTP

Aprende con más detalle a simular solicitudes, hacer pruebas con autenticación y aserciones JSON.
Última modificación el 13 de julio de 2026