Skip to content

Pruebas

Las pruebas son más importantes que el lanzamiento de código. Si no tienes pruebas suficientes o una cantidad inadecuada, cada vez que publiques código no estarás seguro de no haber introducido errores. Definir qué constituye una cobertura adecuada depende de tu equipo, pero lograr el 100% de cobertura (todas las declaraciones y ramas) es la forma de obtener máxima confianza y tranquilidad para los desarrolladores. Esto implica que, además de tener un excelente framework de pruebas, debes utilizar una buena herramienta de cobertura.

No existen excusas para omitir las pruebas. Hay numerosos frameworks de pruebas para JS, así que encuentra uno que se adapte a tu equipo. Cuando lo selecciones, asegúrate de escribir pruebas para cada nueva función/módulo que desarrolles. Si prefieres el Desarrollo Dirigido por Pruebas (TDD), es excelente, pero el objetivo principal es garantizar el cumplimiento de los objetivos de cobertura antes del lanzamiento de funcionalidades o la refactorización de código existente.

Un único concepto por prueba

Malo:

javascript
import assert from "assert";

describe("MomentJS", () => {
  it("handles date boundaries", () => {
    let date;

    date = new MomentJS("1/1/2015");
    date.addDays(30);
    assert.equal("1/31/2015", date);

    date = new MomentJS("2/1/2016");
    date.addDays(28);
    assert.equal("02/29/2016", date);

    date = new MomentJS("2/1/2015");
    date.addDays(28);
    assert.equal("03/01/2015", date);
  });
});

Bueno:

javascript
import assert from "assert";

describe("MomentJS", () => {
  it("handles 30-day months", () => {
    const date = new MomentJS("1/1/2015");
    date.addDays(30);
    assert.equal("1/31/2015", date);
  });

  it("handles leap year", () => {
    const date = new MomentJS("2/1/2016");
    date.addDays(28);
    assert.equal("02/29/2016", date);
  });

  it("handles non-leap year", () => {
    const date = new MomentJS("2/1/2015");
    date.addDays(28);
    assert.equal("03/01/2015", date);
  });
});