Módulo 1: Introducción a las pruebas unitarias
📚 1.1. ¿Qué son las pruebas unitarias?
Las pruebas unitarias son una técnica para validar que las partes individuales del código (generalmente funciones o métodos) funcionen correctamente de manera aislada. Cada prueba se enfoca en una pequeña unidad de código, y su objetivo es asegurar que dicha unidad devuelva los resultados esperados para un conjunto específico de entradas.
Las pruebas unitarias son fundamentales porque permiten identificar y corregir errores de manera temprana en el ciclo de desarrollo, antes de que los módulos interactúen entre sí.
🧩 1.2. Importancia de las pruebas en desarrollo de software
Escribir pruebas unitarias es una práctica clave en el desarrollo de software de calidad, ya que:
Aumentan la confianza en el código. Con pruebas, sabes que los cambios no rompen funcionalidades existentes.
Facilitan el mantenimiento y la refactorización, ya que puedes modificar el código con la seguridad de que cualquier error será detectado de inmediato.
Documentan el comportamiento esperado de las unidades de código, sirviendo como una referencia sobre cómo deberían funcionar los módulos individuales.
Ahorro de tiempo en la detección de errores durante fases posteriores del proyecto, como en las pruebas de integración o en producción.
🧪 1.3. Tipos de pruebas: Unitarias, Integración, E2E
Pruebas unitarias: Se centran en probar partes individuales del código (funciones, métodos, componentes). Son rápidas y eficientes porque se ejecutan en aislamiento, sin dependencias externas.
Pruebas de integración: Validan cómo interactúan diferentes módulos o componentes del sistema. Este tipo de pruebas asegura que las piezas del código funcionen correctamente juntas.
Pruebas End-to-End (E2E): Simulan el flujo de usuario en una aplicación. Verifican que el sistema completo funcione como se espera desde la perspectiva del usuario, probando desde la interfaz hasta el backend.
🔄 1.4. Introducción a TDD (Test Driven Development)
El Desarrollo Guiado por Pruebas (TDD) es una metodología en la cual las pruebas se escriben antes de implementar el código funcional. El ciclo de trabajo en TDD sigue tres pasos:
Escribir una prueba que falle: Antes de escribir cualquier código, defines una prueba basada en lo que quieres que haga el nuevo código.
Escribir el código mínimo necesario para pasar la prueba: Se implementa la funcionalidad mínima que haga pasar la prueba.
Refactorizar el código: Una vez que la prueba pasa, se mejora el código para hacerlo más limpio, eficiente o mantenible, asegurando que la prueba siga pasando.
TDD ayuda a mantener un código robusto, donde las pruebas actúan como una red de seguridad ante futuras modificaciones.
🛠️ 1.5. Herramientas para pruebas en Angular: Jasmine y Karma
Jasmine: Es un framework de pruebas para JavaScript, utilizado ampliamente en proyectos Angular para escribir pruebas unitarias. Jasmine proporciona una sintaxis clara y expresiva para definir expectativas sobre el comportamiento del código, y cuenta con "matchers" (validadores) para comprobar resultados.
Karma: Es un test runner o ejecutor de pruebas. Karma se encarga de ejecutar las pruebas escritas con Jasmine en diferentes navegadores, ya sea de manera local o en un entorno de integración continua (CI). Karma proporciona reportes detallados sobre el estado de las pruebas y ayuda a depurar cualquier error que ocurra durante la ejecución.
Ejemplo de una prueba simple con Jasmine
En este ejemplo, creamos una prueba básica usando Jasmine. El bloque describe()
agrupa un conjunto de pruebas relacionadas, en este caso, para la función de suma. Dentro de describe()
, usamos el bloque it()
para definir una prueba individual. La expectativa (expect()
) verifica si el resultado de la suma es el esperado. Si el valor devuelto es 5, la prueba pasa; de lo contrario, fallará
Última actualización