12 Testes e Boas Práticas
Escrever código que funciona é importante.
Escrever código confiável e fácil de manter é essencial.
12.1 Boas práticas essenciais
- Use nomes claros para variáveis e funções.
- Crie funções pequenas com uma responsabilidade.
- Evite duplicação de código.
- Trate erros de forma explícita.
- Comente apenas quando necessário.
12.2 Exemplo: função clara e validada
function calcularMedia(notas) {
if (!Array.isArray(notas) || notas.length === 0) {
throw new Error("Informe um array de notas");
}
const soma = notas.reduce((acc, n) => acc + n, 0);
return soma / notas.length;
}12.3 Tratamento de erros
function dividir(a, b) {
if (b === 0) {
throw new Error("Divisão por zero não permitida");
}
return a / b;
}
try {
console.log(dividir(10, 0));
} catch (erro) {
console.error("Erro:", erro.message);
}12.4 Validações úteis
function criarAluno(nome, idade) {
if (!nome || typeof nome !== "string") {
throw new Error("Nome inválido");
}
if (typeof idade !== "number" || idade < 0) {
throw new Error("Idade inválida");
}
return { nome, idade };
}12.5 Introdução a testes unitários com Vitest
sum.js
export function sum(a, b) {
return a + b;
}sum.test.js
import { describe, it, expect } from "vitest";
import { sum } from "./sum.js";
describe("sum", () => {
it("deve somar dois números", () => {
expect(sum(2, 3)).toBe(5);
});
});12.6 Testando casos de erro
dividir.test.js
import { describe, it, expect } from "vitest";
import { dividir } from "./dividir.js";
describe("dividir", () => {
it("deve lançar erro quando divisor é zero", () => {
expect(() => dividir(10, 0)).toThrow("Divisão por zero");
});
});12.7 Cobertura mínima de testes
Para funções críticas, tente cobrir:
- caso comum;
- caso de borda;
- caso inválido.
12.8 Checklist de revisão antes de entregar
- O código está legível?
- Há validações mínimas?
- Erros são tratados?
- Existem testes para as funções principais?
- Os nomes estão claros?
12.9 Exercícios
- Refatore um código longo em funções menores.
- Implemente validações com
throwetry/catch. - Escreva 3 testes para funções matemáticas simples.
- Escreva teste para um cenário de erro.
- Desafio: testar uma função que recebe array e retorna média.