Contenido del curso

Testing de recetas con PHP Artisan

Resumen

Configurar pruebas automatizadas para un módulo de recetas en Laravel te permite validar el index, el show y la eliminación sin revisar cada endpoint manualmente. Aquí verás cómo reutilizar código de tests anteriores, crear datos de prueba con categorías y usuarios, y detectar errores que romperían tu código en producción.

Cómo reutilizar tests previos para el módulo de recetas

La base del testing de recetas parte del código ya escrito para etiquetas. Copiar esa estructura te ahorra tiempo y mantiene consistencia entre módulos.

El flujo inicial replica la configuración previa: trabajar con base de datos, extender de la clase de testing por defecto e importar las clases necesarias. La diferencia clave aparece al importar la categoría, porque cada receta depende de una categoría existente para crearse correctamente.

¿Por qué una receta necesita una categoría en los tests? Porque la relación está definida en el modelo. Si creas una receta sin categoría, la base de datos lanza un error y tu test falla antes de validar la lógica real.

Qué pasos seguir para preparar el entorno del test

Antes de cada prueba, el método setup necesita refrescar la base de datos y dejar listos los datos mínimos para trabajar. Estos son los pasos que se ejecutan en cada test del módulo:

  • Refrescar la base de datos para empezar limpio.
  • Crear un usuario e iniciar sesión con ese usuario.
  • Crear una categoría que servirá de relación.
  • Crear las recetas necesarias según el método a probar.

Esta preparación garantiza que cada test sea independiente y no arrastre datos de pruebas anteriores [01:30].

Cómo testear el index, show y delete de recetas

Cada acción del controlador requiere un test específico que valide tanto el código de respuesta como la estructura de los datos devueltos.

Cómo validar el index con dos recetas creadas

Para el index se crean dos recetas usando la variable en plural y luego se visita la ruta del listado. La aserción espera un status 200 y dos registros en la respuesta. También se validan campos puntuales como el título y la descripción dentro de la estructura de atributos.

La idea es confirmar que el endpoint devuelve la cantidad correcta de elementos y que cada uno expone los campos esperados por el frontend.

Cómo probar show y delete con una receta específica

El test de show crea una categoría, luego una receta asociada a esa categoría y visita la ruta concatenando el ID de la receta creada. Se espera un status 200 y una estructura con ID, tipo y atributos.

Para el delete se sigue el mismo patrón de creación, pero el método HTTP cambia de get a delete. La respuesta esperada es un status sin contenido, que corresponde al código 204 configurado previamente en el controlador [04:15].

¿Qué significa el status 204 en una API? Es la respuesta estándar para una eliminación exitosa. Indica que la operación funcionó pero no hay contenido que devolver al cliente.

Por qué el testing automatizado garantiza calidad de código

Ejecutar php artisan test desde el terminal corre todos los tests configurados y devuelve un reporte inmediato. Cuando todo pasa, ves los resultados en verde. Cuando algo falla, aparecen en rojo con el detalle del error.

Este flujo protege tu código de dos formas concretas. Primero, detecta errores en el módulo nuevo que estás programando. Segundo, alerta cuando una modificación rompe código anterior que ya funcionaba.

Cómo detecta el testing errores invisibles al editor

El ejemplo de la clase muestra un caso real: si en el método de eliminar cambias una palabra y agregas una doble S por error, el editor no marca nada porque la sintaxis sigue siendo válida. Pero al correr los tests, el resultado salta de inmediato:

  • Esperado: status 204.
  • Recibido: status 500.
  • Diagnóstico: error del servidor por código mal escrito.

Lo mismo ocurre si alguien borra un paréntesis o un punto y coma en el módulo de categorías mientras trabaja en otro módulo. El editor puede no marcarlo, pero el test detecta que la programación anterior quedó dañada.

¿Qué indica un error 500 en un test? Que hay un fallo en el servidor o en el código de la aplicación. No es un problema de la prueba, es un problema real que el usuario también vería en producción.

Cuál debe ser tu enfoque al escribir tests

La regla práctica es simple: todo test debería pasar de rojo a verde. Cuando empiezas a escribir una prueba, lo normal es que falle. Tu trabajo es ajustar el código hasta que el reporte aparezca completamente en verde.

La revisión manual tiene un límite humano. Mientras pruebas el módulo actual dejas de revisar los anteriores, y ahí es donde se cuelan los bugs que llegan a producción. Con los tests automatizados, un solo comando valida todos los módulos al mismo tiempo y te avisa si algo dejó de funcionar [07:20].

Este enfoque convierte la calidad del código en algo medible y repetible. Ya no dependes de recordar qué probar, el sistema lo hace por ti cada vez que ejecutas el comando.

¿Ya configuraste tus tests para los módulos principales de tu API? Cuéntame en los comentarios qué módulo te resultó más complejo de testear.