AfterEach Hook y cómo limpiar después de cada prueba

| Última modificación: 18 de marzo de 2024 | Tiempo de Lectura: 3 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

Como desarrolladores, una parte esencial de nuestro trabajo es garantizar que nuestro código funciona correctamente bajo todas las circunstancias previstas. Es por eso que las pruebas son una parte integral de cualquier ciclo de desarrollo de software. Aquí es donde el uso adecuado del AfterEach Hook se vuelve crucial.

El AfterEach Hook es como un equipo de limpieza que entra después de que cada prueba individual haya hecho su trabajo. Imagina que estás haciendo una fiesta (es decir, corriendo un test). Después de cada fiesta, necesitas limpiar la casa (el entorno de pruebas) para asegurarte de que está lista para la próxima. No querrías que los vasos sucios de la fiesta anterior estuvieran todavía por ahí cuando lleguen tus próximos invitados, ¿verdad? Pues lo mismo ocurre con las pruebas.

¿Qué es un AfterEach Hook?

Un AfterEach Hook es un bloque de código que se ejecuta después de cada prueba individual dentro de un bloque de pruebas o una suite. Los AfterEach Hooks son especialmente útiles cuando necesitas restablecer alguna condición en el entorno de pruebas después de cada test.

Por ejemplo, si estás modificando una variable global o cambiando un mock para cada prueba, querrás limpiar o restablecer estos cambios después de cada test para asegurarte de que no afectan a las pruebas siguientes. Aquí es donde cobra importancia el AfterEach Hook.

Para dar un ejemplo concreto, supón que estás probando una función que añade elementos a un carrito de compra en un sitio de comercio electrónico. Llevas a cabo varias pruebas, añadiendo diferentes productos al carrito. Pero si no vacías el carrito después de cada prueba (con AfterEach Hook), el producto que has añadido durante una prueba podría seguir estando en el carrito durante la siguiente. Esto podría hacer que tus pruebas se comportasen de forma impredecible.

La importancia del AfterEach Hook

La clave para un test unitario eficaz es que debe ser capaz de ejecutarse independientemente de los demás, sin afectar el entorno de los demás test. El AfterEach Hook juega un papel esencial en ello. Algunos de los beneficios de usar AfterEach Hook son:

  1. Mantiene la independencia de las pruebas: como ya hemos mencionado, cada test debe ser capaz de ejecutarse independientemente de los demás. Un AfterEach Hook efectivo se asegura de que esto sucede al limpiar el entorno después de cada prueba.
  2. Previene errores inesperados: si una prueba deja algún dato o estado alterado, esto podría causar que las siguientes pruebas fallen. Los AfterEach Hooks previenen este tipo de errores al limpiar después de cada prueba.
  3. Mejora la organización del código: al tener un lugar específico para la limpieza de cada prueba, se mantiene el código más limpio y organizado.

Ejemplo práctico de AfterEach Hook

Veamos un ejemplo de cómo usar el AfterEach Hook. Supongamos que estamos probando una función que le agrega elementos a un array. Queremos asegurarnos de que este array se vacía después de cada prueba para que el orden de las pruebas no afecte a los resultados.

const {expect} = require('chai');
let array = [];

describe('Array tests', () => {
  afterEach(() => {
    array = []; // Limpiamos el array después de cada prueba
  });

  it('Add an element to the array', () => {
    array.push('element');
    expect(array).to.have.lengthOf(1);
  });

  it('Add another element to the array', () => {
    array.push('another element');
    expect(array).to.have.lengthOf(1);
  });
});

Aquí, el AfterEach Hook se encarga de limpiar el array después de cada prueba. Esto asegura que cada test se ejecuta en un entorno limpio y que el orden de las pruebas no afecta a los resultados.

¿Listo para seguir aprendiendo?

El AfterEach Hook es un aliado esencial para mantener tus pruebas unitarias limpias y eficientes. Te ayuda a mantener la independencia de las pruebas y a prevenir errores inesperados, lo que mejora la calidad y la fiabilidad de tus pruebas.

Si este tipo de conocimientos te despiertan las ganas de aprender más, te invitamos a unirte a nuestro Desarrollo Web Full Stack Bootcamp. No solo aprenderás sobre ganchos y otros aspectos esenciales del desarrollo y las pruebas de software, sino que te formarás como un desarrollador profesional, uno de los perfiles más demandados y mejor remunerados. ¡Pide información ahora y descubre cómo cambiar tu vida!

Alberto Casero

Alberto Casero es CTO en Watium, Fundador de Kas Factory & Coordinador del Bootcamp en Desarrollo Web.

Posts más leídos

¡CONVOCATORIA ABIERTA!

Desarrollo Web

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado