Por que fazer testes?
Os testes automatizados verificam que seu código faz o que deve. Eles te dão confiança para mudar o código sem medo de quebrar algo (os testes avisam).
Uma asserção básica
Uma asserção verifica que uma condição se cumpre; caso contrário, falha.
function assert(condicao, mensagem) {
if (!condicao) throw new Error(mensagem || "Falhou a asserção");
}
function dobro(x) {
return x * 2;
}
assert(dobro(4) === 8, "dobro(4) deveria ser 8");
assert(dobro(0) === 0, "dobro(0) deveria ser 0");
console.log("✅ Todos os testes passaram");
Frameworks de testes
Em projetos reais usam-se ferramentas como Jest ou Vitest, com uma sintaxe declarativa:
test("dobro multiplica por dois", () => {
expect(dobro(4)).toBe(8);
});
TDD: Test-Driven Development
O desenvolvimento guiado por testes inverte a ordem habitual. O ciclo é vermelho → verde → refatorar:
- Vermelho: escreva um teste que falha (a função ainda não existe).
- Verde: escreva o código mínimo para que ele passe.
- Refatorar: melhore o código mantendo os testes no verde.
O TDD te obriga a pensar primeiro o que o código deve fazer antes de como.
Exemplos
Mini suíte de testes caseira
function assert(cond, msg) {
if (!cond) throw new Error(msg);
}
function ehPar(n) {
return n % 2 === 0;
}
assert(ehPar(4) === true, "4 é par");
assert(ehPar(7) === false, "7 é ímpar");
console.log("Todos os testes passaram");