Skip to content

Tests

Tests sind wichtiger als das Ausliefern von Code. Wenn Sie keine Tests oder eine unzureichende Anzahl an Tests haben, können Sie bei jeder Codeauslieferung nicht sicher sein, ob Sie Funktionalität beeinträchtigt haben. Die Festlegung einer angemessenen Anzahl an Tests obliegt Ihrem Team, aber 100% Abdeckung (aller Anweisungen und Zweige) ist der Weg zu maximaler Code-Sicherheit und Entwicklerruhe. Dies bedeutet: Neben einem guten Testframework benötigen Sie auch ein gutes Abdeckungstool.

Es gibt keine Ausrede, um auf Tests zu verzichten. Es existieren viele gute JS-Testframeworks – finden Sie eines, das Ihrem Team zusagt. Sobald Sie ein passendes Framework gefunden haben, sollten Sie für jedes neue Feature/Modul Tests schreiben. Wenn Sie Test Driven Development (TDD) bevorzugen, ist das ideal. Entscheidend ist jedoch, dass Sie Ihre Abdeckungsziele vor jedem Feature-Release oder Refactoring erreichen.

Ein Konzept pro Test

Schlecht:

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);
  });
});

Gut:

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);
  });
});