Skip to content

Estratégia de Testes

Garantir a qualidade do código através de testes automatizados é fundamental para a estabilidade do sistema. Nossa estratégia foca em cobrir lógicas de negócio e fluxos críticos.

1. Pirâmide de Testes

  • Unitários (70%): Foco em funções utilitárias, lógica de negócio pura e componentes isolados.
  • Integração (20%): Testes de hooks customizados, comunicação entre serviços e integração entre componentes.
  • E2E/Componente (10%): Fluxos críticos do usuário, garantindo que as principais funcionalidades funcionem de ponta a ponta.

2. Testes de Unidade

Cada funcionalidade ou utilitário deve ter um arquivo de teste correspondente na pasta __tests__ adjacente ao arquivo original.

Exemplo de Teste:

typescript
import { formatCurrency } from "../format-utils";

describe("Formatadores", () => {
    it("deve formatar valores monetários corretamente", () => {
        const result = formatCurrency(1500.50);
        expect(result).toBe("R$ 1.500,50");
    });

    it("deve retornar valor zero quando nenhum parâmetro for passado", () => {
        const result = formatCurrency(0);
        expect(result).toBe("R$ 0,00");
    });
});

3. Mocking

  • Usar ferramentas de mock para interceptar chamadas de API e dependências externas.
  • Mockar o @ptm/design-system se necessário para testes de unidade rápidos.

4. Cobertura (Coverage)

  • 100% de cobertura recomendada para funções de lógica de negócio e utilitários compartilhados.
  • Cobertura geral do projeto deve se manter em um nível saudável (acima de 80%).