DEV Community

Cover image for Testes (Código Limpo: Que Bruxaria é Essa?!?! - Parte 7)
ananopaisdojavascript
ananopaisdojavascript

Posted on

3 2

Testes (Código Limpo: Que Bruxaria é Essa?!?! - Parte 7)

Testar é mais importante do que enviar para produção. Se você não tem testes ou tem uma quantidade inadequada destes, toda vez que você envia o seu código, não terá certeza de que não quebrou nada. Cabe ao seu time decidir o que constitui uma quantidade adequada de testes, mas é o 100% de cobertura (todas as declarações e ramificações) é o modo pelo qual você adquire autoconfiança e paz de espírito como desenvolvedor. Isso significa que além de usar um excelente "framework" de testes, você também precisa de uma boa ferramenta de cobertura. Não há desculpa para não escrever testes. Há muitas "frameworks" bons de testes JS, então encontre um do agrado da sua equipe. Quando você encontrar o que funciona para seu time, tenha o objetivo de sempre escrever testes para cada nova funcionalidade/módulo que introduza. Se o seu método favorito é o Desenvolvimento Orientado a Testes (TDD), é bom, porém o ponto principal é apenas ter certeza de que você está alcançando seus objetivos de cobertura antes de lançar qualquer funcionalidade ou refatorar uma existente.

Um único conceito por teste

Não é recomendável:

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);
  });
});
Enter fullscreen mode Exit fullscreen mode

É recomendável:

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);
  });
});
Enter fullscreen mode Exit fullscreen mode

E aí? Gostaram? Até a próxima tradução! 🤗

Sentry blog image

How I fixed 20 seconds of lag for every user in just 20 minutes.

Our AI agent was running 10-20 seconds slower than it should, impacting both our own developers and our early adopters. See how I used Sentry Profiling to fix it in record time.

Read more

Top comments (0)

SurveyJS custom survey software

JavaScript UI Library for Surveys and Forms

Generate dynamic JSON-driven forms directly in your JavaScript app (Angular, React, Vue.js, jQuery) with a fully customizable drag-and-drop form builder. Easily integrate with any backend system and retain full ownership over your data, with no user or form submission limits.

View demo