Contenido del curso

Test de actualización de recetas en Laravel

Resumen

Probar la función de actualización en Laravel cierra el ciclo de testing de un CRUD completo. Si quieres garantizar que tu API responde correctamente cuando un usuario edita una receta, necesitas un test que simule el inicio de sesión, cree los datos previos y verifique los cambios en la base de datos.

Aquí encontrarás cómo estructurar ese test paso a paso, qué afirmaciones usar y por qué este hábito te acerca a un nivel avanzado como programador.

¿Cómo configurar el test de actualización de recetas?

El test de actualización se construye reutilizando la lógica del método de creación, pero con un giro: necesitas datos previos que luego serán modificados.

Dentro de la carpeta feature abre el archivo de pruebas y duplica el método de crear receta. Renombra el nuevo método como actualización y ajusta su lógica con estos pasos.

  • Inicia sesión con un usuario autenticado.
  • Crea una categoría asociada a la receta.
  • Crea una receta con título y descripción estándar para tener algo que modificar.
  • Visita la ruta de actualización pasando el id de la receta.
  • Envía los nuevos valores como si vinieran de un formulario, por ejemplo Actualización del título y Actualización de la descripción.

Los ingredientes y las instrucciones quedan fuera porque no son campos obligatorios en este flujo.

¿Por qué se reutiliza el método de crear para probar la actualización? Porque necesitas datos existentes antes de modificarlos. Crear la receta dentro del test garantiza un estado inicial controlado y evita depender de información externa.

¿Qué afirmaciones usar para validar la actualización en base de datos?

Una respuesta HTTP afirmativa no basta. Para confirmar que la actualización ocurrió, debes consultar la base de datos directamente.

Espera un OK como respuesta de la ruta y luego usa la afirmación assertDatabaseHas indicando la tabla recetas y los campos que cambiaron. En este caso, título y descripción deben coincidir con los nuevos valores enviados.

php $this->assertDatabaseHas('recetas', [ 'titulo' => 'Actualización del título', 'descripcion' => 'Actualización de la descripción', ]);

Esta afirmación cierra el círculo: confirmas que la petición funcionó y que los datos quedaron persistidos correctamente.

¿Cómo ejecutar y filtrar pruebas con PHP Artisan?

En el terminal corre php artisan test para lanzar toda la suite. Verás cómo se validan las funciones del CRUD de recetas: listado total, crear, ver, actualización y eliminar, además de categorías y etiquetas.

Si quieres enfocarte solo en el test que estás desarrollando, filtra por nombre con la palabra clave de la función, por ejemplo update. Así repites únicamente esa prueba mientras la ajustas. Cuando llega al estado verde, ejecuta toda la suite para confirmar que nada más se rompió.

¿Qué hace assertDatabaseHas en Laravel? Verifica que existe al menos un registro en una tabla con los valores que le pasas. Es ideal para confirmar inserciones y actualizaciones después de una petición HTTP.

¿Qué otras afirmaciones de base de datos ofrece Laravel?

La documentación oficial de Laravel, en la sección de testing dentro del apartado de base de datos, lista todas las afirmaciones disponibles para que pruebes cualquier escenario.

Entre las más útiles están las que cuentan registros, las que verifican que algo no existe en la base de datos y las que validan estados específicos. Conocerlas te da un repertorio amplio para cubrir cualquier caso: creación, eliminación, soft deletes o conteo de registros relacionados.

Revisar esa sección con calma te ahorra reinventar lógica de validación y te conecta con las mejores prácticas del framework.

¿Por qué el testing te convierte en un programador avanzado?

Escribir pruebas no es un extra, es el paso previo a programar a otro nivel. El testing mejora la calidad de tu código porque te obliga a pensar en cómo se va a usar antes de escribirlo.

  • Promueve un diseño modular y mantenible.
  • Hace tu código escalable y flexible en el tiempo.
  • Facilita la detección temprana de errores.
  • Aumenta la confianza al refactorizar o agregar funciones.
  • Fomenta la colaboración porque genera documentación implícita.

Ese último punto es clave. Cuando alguien lee un test bien escrito, entiende el flujo completo: primero inicia sesión, luego visita una ruta, luego espera un resultado. Esa narrativa funciona como manual vivo de la aplicación para cualquiera que entre al proyecto a desarrollar o mantener código.

Ahora te toca a ti: replica este test de actualización en tu propio proyecto, experimenta con otras afirmaciones de base de datos y cuéntanos en los comentarios qué función de tu CRUD vas a probar primero.