AfterAll Hook: cierre de pruebas efectivo

| Última modificación: 24 de octubre de 2024 | Tiempo de Lectura: 3 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

En el mundo de las pruebas de software, el AfterAll Hook es uno de los ganchos o hooks que se utilizan para realizar una serie de acciones al finalizar una prueba. La idea es que, después de cada prueba, querrás limpiar el terreno para asegurarte de que el siguiente test comienza en un ambiente limpio y libre de interferencias.

La importancia de AfterAll

El AfterAll Hook es un objeto vital para mantener la salud y precisión de tus pruebas. Considera un test en el que hayas cambiado la data global. Si dejas esa data modificada, podría afectar a la ejecución de la próxima prueba, posiblemente llevándote a un error de prueba.

Vamos a desglosar por qué AfterAll Hook es un salvador de vidas en el campo del testing:

  1. Mantiene la independencia del test: cada test debe ser capaz de ejecutarse independientemente de los demás, sin interferencias. Consideremos un escenario en el que estás realizando pruebas en una aplicación web que le permite a los usuarios crear y borrar posts en un blog. Cada prueba debe ser capaz de ejecutarse independientemente, lo que significa que un test no debe ser afectado por el resultado de otro.
  2. Ahorra tiempo: en lugar de limpiar manualmente después de cada test, puedes utilizar AfterAll Hook para hacer este trabajo. Imaginemos que estamos trabajando con una aplicación que le permite a los usuarios registrarse y crear un perfil. Para las pruebas, creamos perfiles ficticios y, después de cada prueba, queremos borrar estos perfiles para asegurarnos de que no interfieren con las pruebas futuras. Podrías hacer esto manualmente después de cada prueba, pero sería un trabajo repetitivo y tedioso.
  3. Evita errores: Un AfterAll Hook eficaz puede prevenir la ocurrencia de errores inesperados.

Ejemplos prácticos de AfterAll Hook

Un ejemplo clásico del uso de AfterAll Hook podría ser en un test donde se crea una cookie. Siguiendo nuestra política de cookies, es esencial que se eliminen todas las cookies después de cada prueba.

describe('Cookie test', () => {
  let cookie;

  beforeEach(() => {
    cookie = createCookie();
  });

  it('Check the cookie', () => {
    assert(cookie.exists());
  });

  afterAll(() => {
    cookie.destroy();
  });
});

En el ejemplo, el afterAll() se encarga de eliminar la cookie tras ejecutar el test. Esto asegura que cada prueba se realiza en un entorno limpio.

Vamos a ver otro ejemplo de cómo puede utilizarse AfterAll Hook. En este caso, supongamos que estamos probando una base de datos. Un uso común de AfterAll es la desconexión de una base de datos después de realizar una serie de pruebas.

const mongoose = require('mongoose');
const {expect} = require('chai');

describe('Database test', () => {
  beforeAll(async () => {
    await mongoose.connect(process.env.MONGO_URI, {useNewUrlParser: true, useUnifiedTopology: true });
  });

  it('Check database connection', async () => {
    const db = mongoose.connection;
    expect(db).to.exist;
  });

  afterAll(async () => {
    await mongoose.connection.close();
  });
});

En este caso, primero se establece una conexión con la base de datos en el ‘beforeAll’. Después, se realiza una prueba para comprobar si la conexión a la base de datos existe. Finalmente, el ‘afterAll’ cierra la conexión con la base de datos después de todas las pruebas.

Esta es una excelente manera de garantizar que no dejamos ninguna conexión a la base de datos abierta tras ejecutar nuestras pruebas. De esta forma, nos aseguramos de que los recursos no se agotan y nuestro código se mantiene limpio y ordenado.

El hook AfterAll es esencial para mantener la precisión y efectividad de tus pruebas. Es como el servicio de limpieza del código, que te asegura que todo está listo y limpio para el siguiente test.

¿Listo para aprender más?

Si estás emocionado por aprender más sobre las mejores prácticas de pruebas y otros conceptos de programación avanzados, te encantará nuestro Desarrollo Web Full Stack Bootcamp. No solo aprenderás todo sobre AfterAll Hook, sino que también adquirirás habilidades prácticas en el desarrollo web para, en pocos meses, convertirte en todo un profesional.

Con esta formación intensiva e íntegra, estarás bien equipado para saltar directamente al mundo laboral cuando termines. ¿Te animas a darle un giro a tu vida? ¡Pide más información ya mismo y descubre cómo lograrlo con KeepCoding!

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