Curso Testing con Laravel

Laravel, PHPUnit, pruebas unitarias, pruebas funcionales, pruebas de integración.
Material disponible
Avanzado
65 Clases 16 h
99€
75€
Precio en promoción
Laravel es uno de los frameworks más destacados para el desarrollo de aplicaciones web. Desarrollado en PHP, fomenta un desarrollo de alta calidad, escalable y apoyado por numerosos patrones y buenas prácticas. Ha tenido una progresión siempre ascendente, llegando a conquistar la mayor comunidad de desarrolladores de la historia de los frameworks backend.

Por supuesto, entre las técnicas más habituales de Laravel encontramos el desarrollo de pruebas del software, una necesidad para crear código que nos asegure un funcionamiento robusto a lo largo de todo el tiempo de mantenimiento de las aplicaciones, básica para técnicas ágiles como el refactoring o la integración y despliegue continuos.

En EscuelaIT tenemos numerosos cursos donde abordamos este framework, que puedes ver en el plan de estudios de Laravel. En esta ocasión llega el turno del desarrollo de pruebas unitarias, que permite cerrar el círculo de la formación avanzada de Laravel.

Qué aprenderé en el Curso Testing con Laravel

  • Comprender la utilidad e importancia de las pruebas en el software
  • Aprender sobre pruebas unitarias, funcionales y de integración y sus diferencias
  • Aprender sobre PHPUnit y sus opciones más comunes integrados con Laravel
  • Aprender a hacer pruebas sobre la base de datos y los cambios en la información
  • Aprender enfoques para probar partes del software que son externas (servicios terceros)

Objetivos del curso

En este curso de pruebas de software con Laravel, los estudiantes aprenderán a realizar tests en aplicaciones desarrolladas con este framework. Explorarán el uso de PHPUnit y las herramientas integradas en Laravel, además de técnicas avanzadas para llevar a cabo pruebas de integración, incluyendo la validación de aplicaciones que interactúan con bases de datos o servicios externos.

Por qué debes aprender Testing con Laravel

Realizar pruebas unitarias e integradas es esencial en el desarrollo de aplicaciones modernas y constituye un pilar fundamental en la adopción de metodologías ágiles. Laravel ofrece una integración fluida con herramientas de testing como PHPUnit, promoviendo así el desarrollo de pruebas eficaces y eficientes en el ciclo de vida del software.

En este curso, aprenderás a desarrollar tanto pruebas unitarias como pruebas funcionales y pruebas de integración, aprovechando al máximo las capacidades que Laravel ofrece para simplificar y mejorar estas prácticas. Además, comprenderás cómo Laravel facilita la implementación de técnicas de testing, lo que te permitirá adoptar un enfoque de desarrollo más seguro y robusto. Con los conocimientos adquiridos, estarás preparado para incorporar procesos de testing de manera integral en tus proyectos, mejorando así la calidad de tus proyectos y tus habilidades como desarrollador en Laravel.

Qué tengo que saber

Para poder aprovechar este curso de Testing con Laravel es necesario tener un conocimiento sólido de PHP y al menos medio sobre el framework Laravel. Además debes disponer de los conocimientos impartidos durante el curso de Testing en PHP Unit.

Clases y contenidos

Introducción Testing con Laravel

Generalidades de testing de aplicaciones Laravel, organización de los test, ejecución de los test de manera secuencial o en paralelo. Definición del entorno de testing y distintas localizaciones de las variables de entorno.

Presentación Testing con Laravel

En este vídeo se explica el enfoque del curso, los contenidos que va a comprender y los objetivos que se persiguen. Además se darán referencias de otros cursos que sería importante realizar antes que este.

Proyecto Laravel, carpetas de aplicación y test

En este vídeo se muestra la creación de un proyecto nuevo de Laravel. Se analizan las carpetas donde se colocará el código de la aplicación y el código de test, diferenciando los tipos de test: unitarios, features y browser. Se explicarán otros archivos de configuración de Laravel que tienen relación con el testing y se ejecutarán los primeros test que vienen instalados en el framework.

Personalizar el comando de test y variables de entorno

Vamos a ver más aspectos que tienen que ver con la ejecución de los test en una aplicación Laravel. Veremos cómo personalizar el funcionamiento de la ejecución de los test y además estudiaremos las variables de entorno que podemos asignar de manera específica para la ejecución de las pruebas en Laravel.

Desarrollo de los primeros test en Laravel

Explicamos cómo puedes crear tus primeros tests en una aplicación Laravel. Cómo realizar tests unitarios en una aplicación de Laravel. Cómo realizar pruebas funcionales también llamadas en Laravel como Feature test. Debug de las pruebas en Laravel.

Decorar los métodos de test en Laravel

En este primer vídeo práctico sobre la creación de test vamos a aprender los modos en los que podemos definir métodos de test en las clases de pruebas. Veremos diversos métodos para decorar los métodos de test, de manera que podamos decirle a PHPUnit que los ejecute cuando se lance el proceso que corre las pruebas. Nos quedaremos con el método más moderno y aceptado para decorar los métodos de test, basado en atributos del lenguaje PHP.

Crear un test unitario en Laravel

Comenzamos con la práctica de nuestros primeros test en Laravel mostrando cómo se crea un test unitario, en los que tendremos básicamente todo lo que nos ofrece PHPUnit.

Cómo usar data providers en test unitarios

Una clase de repaso de los data providers, que funcionan exactamente igual que lo que ya conoces de PHPUnit.

Tests de feature en Laravel

Veamos nuestro primer test de feature en Laravel, lo que llamamos en español pruebas funcionales. Será una clase práctica para ver lo mucho que Laravel nos facilita la vida para probar rutas y examinar las respuestas.

Desarrollo de pruebas funcionales

Detalle del desarrollo de las pruebas de feature en Laravel. Cómo probar funcionalidades de manera completa, cómo probar pruebas que envían datos por formulario.

Pruebas de HTTP en Laravel

Veamos en detalle cómo realizar pruebas de HTTP en Laravel. Explorando distintos tipos de asserts ofrecidos por el framework para las pruebas de funcionalidad.

Pruebas de envíos por Post en Laravel

Seguimos con el testing de funcionalidades HTTP en Laravel. En esta clase veremos cómo probar páginas que reciben datos por Post.

Aserciones en vistas

En este vídeo veremos algunas aserciones útiles para probar que se invocan a las vistas esperadas y que se le envían datos específicos.

Test del sistema de login en el navegador

Un ejemplo un poco más elaborado de test end to end, para probar la funcionalidad de login de usuarios en una aplicación Laravel.

Desarrollo de pruebas de validación

Testing de los errores del sistema de validación integrado en el framework Laravel.

Cómo hacer el testing de las validaciones de Laravel

En este vídeo te vamos a mostrar cómo testear las rutas que reciben datos que deben ser validados con el sistema de validaciones de Laravel. Veremos cómo asertar que los datos son válidos o inválidos y cómo asertar también que los mensajes de error son los que se esperan.

Cómo validar los formularios de las vistas

En este bloque veremos cómo podemos hacer aserciones sobre el código HTML de la página, para verificar en este caso concreto que los formularios que se muestran están construidos adecuadamente.

Pruebas alternativas y avanzadas de los mensajes del sistema de validación de Laravel

Para finalizar el tema de pruebas de validación de la entrada de datos vamos a ver modos alternativos de realizar aserciones y cómo podemos usar Data providers de PHPUnit para probar distintos juegos de datos y distintas expectativas de respuestas.

Añadiendo cookies y variables de sesión a las solicitudes

Cómo probar solicitudes HTTP en las cuales se necesita la incorporación de cookies o variables de sesión para la funcionalidad que estamos testeando.

Enviar cookies en las solicitudes de los métodos de test

Cómo hacer que una solicitud creada en el código de pruebas tenga una cookie, de modo que se consiga un escenario de prueba adecuado cuando cierta funcionalidad requiere que exista una cookie en el navegador del usuario.Cómo usar el modelo de Fluent API para el test de los datos devueltos en JSON por las API REST.

Enviar datos en variables de sesión

Cómo conseguir que una solicitud generada en un método de prueba tenga consigo algunas variables de sesión asociadas, de modo que se simule el escenario que ciertas pruebas requieran.

Cómo manejar excepciones en las pruebas dentro de las aplicaciones Laravel

Cómo verificar que ciertas funcionalidades arrojan excepciones. Se verán tanto excepciones tratadas de manera genérica en el framework, como errores diversos del HTTP, como excepciones que se escalan específicamente en nuestro propio código.

Introducción a las excepciones en el testing con Laravel

En este vídeo se explican las generalidades más importantes para poder entender las excepciones en Laravel y cómo se deben tratar en los métodos de test. Veremos qué hace Laravel con las excepciones, ya que el framework las trata de manera predeterminada y cómo conseguir hacer las expectativas de excepciones en el código de pruebas desde distintos enfoques. Veremos de manera práctica además cómo detectar las excepciones con métodos de PHPUnit.

Cómo hacer un fake del sistema de tratamiento de excepciones de Laravel

En este segundo bloque dedicado a excepciones en las pruebas de aplicaciones Laravel vamos a explicar cómo hacer un fake del sistema de reporte de excepciones que ya incorpora el framework y qué métodos de test tenemos a nuestra disposición cuando hemos configurado ese fake para comprobar si las excepciones han sido reportadas o no por Laravel.

Cómo implementar assertThrows para aislar el código que provoca excepciones

Cómo aislar en el código de pruebas la ejecución del código que debería provocar excepciones, mediante una clousure y el método assertThrows.

Cómo tratar excepciones genéricas HTTP

Para acabar el bloque de excepciones en las pruebas de Laravel vamos a explicar varios casos prácticos de excepciones HTTP tradicionales, como páginas no encontradas o errores del servidor y cómo hacer código de testing que permiten detectar estas situaciones y probar que se están enviando las correspondientes páginas de error personalizadas.

Testing de bases de datos en Laravel

Cómo probar funcionalidades que necesitan de bases de datos para realizar su trabajo. Diversas configuraciones del entorno para bases de datos y explicaciones sobre los distintos modos de tratamiento de los datos efímeros. Pruebas de integración en Laravel.

Configurar el proyecto para testear con bases de datos

En este vídeo comenzaremos a trabajar con las bases de datos en el desarrollo de las pruebas de aplicaciones Laravel. De momento vamos a aprender cuáles son las generalidades y alternativas para el trabajo con bases de datos en testing y cómo hacer las configuraciones oportunas en las variables de entorno.

Primeros tests de bases de datos en Laravel

En este segundo bloque vamos a realizar la creación de nuestros primeros tests para probar funcionalidades que dependen de las bases de datos. En este bloque además explicaremos los traits que tenemos en Laravel para el trabajo con bases de datos, en especial RefreshDatabase.

Flujo completo de test funcionalidad de Laravel con bases de datos

En este vídeo vamos a hacer un ejemplo más elaborado para mostrar cómo sería una prueba funcional que incluye diversos pasos, desde el envío de datos por post hasta la creación de datos y la verificación del estado final de la página. También hablaremos de los asserts específicos de bases de datos.

Uso de factorías y seeders en los test de bases de datos

Cómo mejorar las pruebas de integración de las aplicaciones laravel por medio del uso de factorías y seeders que nos ofrece el propio Laravel.

Usar factorías para mejorar los tests en Laravel

Veremos que las factorías, que hemos conocido en cursos más básicos de Laravel también nos resultan muy útiles para hacer métodos de test más concisos y mantenibles. Veremos varios ejemplos de uso de factorías para facilitar la creación de pruebas.

Seeders en los test

También tenemos la posibilidad de usar seeders de Laravel para mejorar el flujo de los métodos de test, algo que nos puede venir bien cuando requerimos la creación de numerosos datos complejos. Veremos distintas maneras de usar los seeds y consejos prácticos para hacer test eficientes.

Testing en Laravel que requiere el uso de usuarios autenticados

Cómo testear la existencia de usuarios autenticados o no autenticados en las rutas de las aplicaciones Laravel. Cómo autenticarse en los métodos de test para funcionalidades que requieran usuarios debidamente logueados.

Instalando el starter kit para el sistema de autenticación

Instalando el starter kit para el sistema de autenticación Comenzamos instalando en una aplicación Laravel el starter kit "Laravel Breeze", que nos permite disponer de un sistema de autenticación de usuarios ya construido. Prestamos atención a todos los test que ya vienen incorporados en Laravel Breeze.

Explicación detallada de los test de autenticación de usuarios

Veremos paso por paso todos los test necesarios para probar el sistema de login, registro y logout de los usuarios en nuestra aplicación Laravel, aprendiendo muchas cosas nuevas sobre los tests que requieren verificar usuarios autenticados o no.

Ejemplo con assertAuthenticatedAs

En los test incluidos con Laravel Breeze no hay un ejemplo con assertAuthenticatedAs, así que lo construimos para ampliar la red de seguridad de nuestras pruebas.

Explicación detallada de los test de profil

La sección de edición del perfil del usuario tiene unos test muy interesantes que requieren aprender nuevas funcionalidades de Laravel para mejorar la integración de los servicios del framework con las API REST. Veremos el uso de rutas patch y delete que se acceden directamente desde formularios HTML tradicionales y entenderemos mejor el sistema de verificación de usuarios de Laravel.

Flujo completo de test de funcionalidad que requiere usuarios autenticados

Además de analizar al detalle los test que nos ofrece Laravel Breeze para el sistema de autenticación vamos a hacer nuestras propias pruebas de funcionalidad que requieren la creación y definición de usuarios autenticados.

Probar que los usuarios solo ven sus propios recursos

Adaptación de los test y el código de producción para asegurar que los usuarios solo ven los recursos que les pertenecen.

Testing de API en Laravel

Cómo realizar los test de aplicaciones backend basadas en API REST que devuelven datos en JSON.

Introducción al test en aplicaciones basdas en API REST

Vamos a introducir las características del testing de APIs en Laravel. Veremos las diferencias con respecto al testing que hemos realizado hasta el momento. Para este bloque haremos tests de descubrimiento, partiendo de un proyecto de API REST realizada con anterioridad en Laravel. Mostraremos cómo restaurar el proyecto y hacer un primer test de JSON.

Cambiar el scaffolding del código de test de Artisan

Este vídeo es un paréntesis en el curso para explicar cómo podemos cambiar el template del código base de los test de un API. Así introduciremos algunas diferencias en el código base como el uso de atributos para anotar los métodos de test.

Pruebas funcionales el registro de usuario en un API REST

En este vídeo vamos a mostrar cómo hacer los test para la funcionalidad de registro de usuario en un API REST, validando los JSON de las respuestas del API, validaciones, status codes, etc.

Otras aserciones sobre los JSON de las respuestas

Veremos nuevas aserciones un poco más detalladas para testear los JSON de las respuestas del API.

Testear el login de usuarios en un API Laravel

En este vídeo veremos cómo realizar el testing de la funcionalidad de login de usuarios de nuestro API REST.

Cómo lidiar con tokens de API en las pruebas

Vídeos sobre el trabajo con autenticación en API REST basadas en tokens de API que se envía a través de las cabeceras de HTTP.

Autenticación mediante token de rutas protegidas para testing

Ahora vamos a testear las rutas protegidas de este API. Vamos a ver todo el proceso que es necesario realizar, para obtener el token de autenticación para un usuario y luego añadir ese token en las cabeceras del HTTP, de modo que podamos testear las funcionalidades del API que requieren usuarios autorizados.

Cómo mejorar los test de rutas protegidas creando un método authorize()

Este es un vídeo clave para la organización del código de test en las aplicaciones Laravel. Añadiremos nuevos métodos a la clase base de los test para autorizar de una manera super sencilla a nuestros usuarios, simplificando el código de tests de rutas autorizadas de aquí en adelante.

Testing con Laravel Gratis

Presentación del curso de Testing con Laravel. Esta sesión está pensada para repasar los contenidos que son tratados durante el curso de Testing con Laravel y que ya están disponibles mediante vídeos a la carta.

Flujo completo de tests sobre recursos de API

Ahora que tenemos claro cómo autenticar a los usuarios y mantener un código sencillo podemos hacer prácticas de test de recursos de API de una manera ágil. Además veremos cómo aplicar más valor a las factorías de Laravel usando la característica Fluent API que nos proporcionan para crear datos de prueba de una manera sencilla y rápida.

Desarrollo de pruebas de un recurso de API REST

En este vídeo comenzamos viendo las pruebas de los endpoints de tipo GET, tanto el GET del listado del recurso como el GET de un recurso en particular (show).

Pruebas del recurso para la creación de elementos

Vemos cómo probar el endpoint de POST de un elemento, con sus casos positivos y sus casos negativos (validaciones).

Testear los endpoints de updates y deletes del recurso

En este último vídeo del testeo de un recurso completo de API veremos cómo testear los PUT y los DELETE, verificando validaciones de permisos para asegurar que solo puede tocar sus propios elementos.

Personalizar factorías para los test

En estos vídeos vamos a hablar un poco más en profundidad de las factorías de Laravel y cómo les podemos sacar un poco más de partido para crear de manera resumida los datos para las pruebas.

Mejorar el código con funcionalidades modernas de factorías de Laravel

En versiones modernas de Laravel se añadieron algunas funcionalidades un poco más avanzadas para la creación de los datos en las factorías, que las vamos a conocer y aplicar para los test de un nuevo endpoint del API.

Fluent JSON Testing

Cómo usar el modelo de Fluent API para el test de los datos devueltos en JSON por las API REST.

Qué es Fluent JSON Testing y primeros ejemplos

Veremos en qué consiste el API para el testing de los JSON de manera fluida, con los primeros ejemplos.

Cómo anidar las pruebas fluidas del JSON

En estos ejemplos vamos a complicar un poco los test para validar estructuras anidadas de JSON con el API Fluent JSON.

Cómo probar las colecciones JSON fluent

En este último vídeo de Fluent JSON Testing vamos a ver qué podemos hacer para comprobar el tamaño y los elementos de las colecciones.

Tests de notificaciones en Laravel y envío de mailables

Cómo testear envíos de emails en Laravel y notificaciones.

Breve introducción a dobles

Solo unas notas aparte para explicar rápidamente qué son los dobles en las pruebas del software y por qué los necesitamos, recordando que tenemos otros cursos de testing con contenido más teórico donde se ve con mucho más detalle este concepto.

Probar Notificaciones en Laravel

Veamos cómo desarrollar una notificación y luego probarla. Para ello usaremos un fake creado con la facade Notification, que nos permite falsear el sistema de envío de notificaciones y además invocar aserciones para saber si se han enviado o no las notificaciones, con la forma que se esperaba.

Probar el objeto Notification en sí

El anterior ejemplo de prueba solamente había probado si la notificación se llegó a enviar y si estaba configurada correctamente, pero en este caso vamos a aprender a probar la notificación en sí.

Test de los mailables de Laravel

En este video vamos a probar un controlador que usa una clase mailable para enviar un email a un usuario. Ese controlador creará un doble (fake) del mailable para falsear el envío y eso nos permitirá realizar aserciones para verificar si el mailable se llegó a enviar.

Test del contenido de los mailables

El ejemplo anterior nos permitió probar el envío, pero no el mailable en sí. Así que en esta ocasión vamos a verificar aspectos como el contenido del mensaje o el asunto del email generado por el mailable.

Tests de Jobs en Laravel

Cómo realizar las pruebas de los trabajos que enviamos a la cola de Laravel.

Crear un job para enviar a la cola

Crearemos un job en nuestra aplicación Laravel, que permita enviarlo a la cola de trabajos (queue). Este job hará la generación de un PDF usando el contenido de uno de los modelos de la aplicación. Solamente vamos a construir el job de generación del PDF, dejando las pruebas para el siguiente vídeo.

Hacer el test del envío de un job a la cola

En este vídeo vamos a comprobar que los jobs se envían a la cola de trabajos de Laravel. Realizaremos un fake de la fachada Queue y luego podremos realizar las aserciones que nos permitan verificar que el job se ha enviado correctamente y que además se construyo de la manera esperada.

Doblar el Storage de Laravel para probar el job

En los pasos anteriores hemos podido crear un doble del sistema de colas de Laravel y hemos podido comprobar que el job se crea correctamente y se envía a la cola. Pero esto no nos ha permitido testear el job en sí. En este vídeo vamos a ver cómo podríamos testear este trabajo, verificando que el archivo se crea en el sistema de archivos de la aplicación. Para eso tendremos que hacer un fake del Storage de Laravel, lo que nos permitirá realizar aserciones para saber si se ha creado convenientemente el archivo PDF al ejecutarse el job.

Mocks de otras fachadas

Cómo doblar cualquier tipo de facade disponible en Laravel, usando la librería Mockery, que está integrada en el framework. Veremos cómo probar distintos tipos de fachadas, ya sean del propio Laravel, de librerías que podamos haber instalado vía Composer o facades creados por nosotros mismos.

Cómo usar Mockery para probar las fachadas Laravel

En este bloque vamos a explicar cómo podemos hacer las pruebas de fachadas en Laravel y comenzaremos con un ejemplo sencillo, tomando una facade que nos ofrece el propio framework para definir los expectations vía el API de Mockery.

Cómo testear facades de packages de terceros

En este vídeo veremos que cualquier package Laravel de terceros, que hayamos instalado vía composer también se puede doblar mediante mockery, creando dobles que nos permiten definir expectations y valores de retorno.

Cómo probar nuestras propias fachadas

Para terminar el bloque de pruebas personalizadas sobre cualquier tipo de fachada en Laravel vamos a explicar qué son las "real time facades", que nos permiten crear de manera cómoda nuestras propias fachadas. Veremos que los mismos métodos de prueba que ofrece Mockery los podemos usar para las fachadas creadas por nosotros mismos.

Mocks personales

Cómo moquear nuestras propias clases de software y cambiar la inyección de las dependencias del contenedor de servicios de Laravel.

Mocks personales con Mockery

Ahora vamos a ver cómo crear mocks para cualquier objeto que necesitemos doblar, usando la interfaz que nos ofrece la librería Mockery que está integrada en Laravel. Veremos cómo el propio sistema de inyección de dependencias de Laravel puede inyectar los dobles de manera automática.

Mocks parciales y spys

En este vídeo vamos a mostrar otros usos de los dobles creados mediante Mockery. Veremos cómo y por qué realizar mocks parciales y la implementación de spy en dobles, con sus diferencias en el uso y posiblidades con respecto a los mocks tradicionales que hemos visto hasta el momento.

Introducción al Browser testing en Laravel

Cómo comenzar con las pruebas del navegador, lo que en Laravel conocemos como Browser testing, mediante Laravel Dusk.

Instalación de Laravel Dusk para Browser Testing

Cómo instalar Laravel Dusk para las pruebas end to end en una aplicación Laravel, usando como host el ordenador local. Configuración de variables de entorno. Correr los test del navegador.

Primeros test del navegador con Laravel Dusk

Entendiendo cómo se hacen test del navegador mediante Laravel Dusk. Creamos un primer test sencillo interactuando con el navegador y haciendo asserts acerca de su estado.

Cómo configurar Laravel Dusk cuando trabajamos con Sail

Unas notas adicionales sobre la configuración de Laravel Sail para disponer de Selenium, a fin de poder ejecutar los test del navegador en contenedores.

Screenshots en Laravel Dusk y resolución de problemas

En este vídeo vamos a ver cómo funciona la utilidad de los screenshots en Laravel Dusk, que nos permiten capturar el estado del navegador cuando fallan los test y cuando queremos ver el estado de la página en un momento dado, para no ir completamente a ciegas. Veremos qué problemas puedes enfrentarte cuando trabajas con test del navegador y la carga de assets como el CSS.

Conclusiones sobre Browser test y epílogo del curso de Testing en Laravel

En este vídeo veremos algunas notas finales sobre los test del navegador, cuándo realizarlos y por qué deberían balancearse con los test de features. Además haremos un pequeño epílogo a modo de conclusión del curso.

Tutoría Final Testing con Laravel

Esta es la tutoría final del curso de Pruebas del Software con Laravel. En esta clase además aprovecharemos para ver nuevos ejemplos de Browser testing, complementando el contenido que hemos visto a lo largo del curso, para testear la parte de envío de mensajes de la aplicación que hicimos en la clase en vivo de presentación.

Valoraciones

Edson Suarez

Llevo menos de la mitad pero ya puedo decir que es un curso excelente.

José Rubén Mariño García

¿Conoces nuestra tarifa plana?

Toda la formación de EscuelaIT, con más de 200 cursos completos para aprender las más variadas tecnologías de programación, diseño y marketing online. Todo! con tu suscripción.

Suscríbete