Na aula anterior, entendemos o que são testes e por que eles importam.
Agora é hora de colocar a mão no código e ver:
como testes unitários funcionam na prática.
🎯 Objetivo da aula
Ao final desta aula, você será capaz de:
- Identificar código testável
- Escrever testes unitários simples
- Entender o padrão AAA (Arrange, Act, Assert)
- Testar funções puras
- Interpretar resultados de testes
O que torna um código testável?
Código fácil de testar geralmente é:
- simples
- determinístico
- sem efeitos colaterais
Ou seja:
dada a mesma entrada, sempre retorna a mesma saída.
Exemplo de função testável
function calcularDesconto(valor, percentual) { return valor - (valor * percentual / 100); }
console.log(calcularDesconto(100, 10)); // Saída será: 90
Essa função é ideal para testes unitários.
O padrão AAA (Arrange, Act, Assert)
Todo teste unitário segue três etapas:
- Arrange → preparar os dados
- Act → executar a função
- Assert → verificar o resultado
Teste manual seguindo o padrão AAA
function testeCalcularDesconto() { // Arrange const valor = 100; const percentual = 10;
// Act
const resultado = calcularDesconto(valor, percentual);
// Assert
if (resultado === 90) {
console.log("Teste passou ✅");
} else {
console.log("Teste falhou ❌");
}
}
testeCalcularDesconto();
// Saída será: Teste passou ✅
Esse é o conceito básico por trás de qualquer framework de testes.
Usando console.assert
O JavaScript possui uma forma nativa simples de assert:
console.assert( calcularDesconto(200, 20) === 160, "Desconto de 20% em 200 deveria ser 160" ); Se o teste falhar, o console exibirá uma mensagem de erro.
Testando múltiplos cenários
Um bom teste cobre mais de um caso:
function testeMultiplosCasos() { console.assert(calcularDesconto(100, 0) === 100, "Sem desconto"); console.assert(calcularDesconto(100, 50) === 50, "50% de desconto"); console.assert(calcularDesconto(100, 100) === 0, "100% de desconto"); }
testeMultiplosCasos();
// Nenhuma saída indica que todos os testes passaram
O que NÃO testar em testes unitários
Evite testar:
- DOM
- requisições HTTP
- banco de dados
- timers reais
Exemplo de código difícil de testar
function atualizarInterface() { document.getElementById("resultado").innerText = "Atualizado"; } Esse código depende do DOM — não é ideal para testes unitários.
Refatorando para testar
Separe lógica de efeitos colaterais:
function gerarMensagem() { return "Atualizado"; }
function atualizarInterface() {
document.getElementById("resultado").innerText = gerarMensagem();
}
Agora gerarMensagem pode ser testada facilmente.
Teste da função refatorada
console.assert( gerarMensagem() === "Atualizado", "Mensagem deveria ser 'Atualizado'" ); E os frameworks de teste?
Frameworks como Jest ou Vitest:
- automatizam execução
- organizam testes
- geram relatórios claros
Mas todos seguem exatamente esses princípios que você acabou de aprender.
Boa prática essencial
Testes não são um peso — são um guia para código melhor.
Resumo da aula para nunca mais esquecer
- Testes unitários verificam funções isoladas
- O padrão AAA organiza testes
- Funções puras são ideais para testes
- Evite DOM e APIs em testes unitários
- Testar ajuda a escrever código melhor
Na próxima (e última!) aula, vamos fechar o curso com:
Debug profissional no navegador.
HARDWARE
Entendendo o seu computador
O que há dentro do meu computador?
Existem alguns componentes fundamentais presentes dentro do seu computador e é muito importante que você conheça um pouco sobre eles, seja para argumentar com algum vendedor durante a compra de um novo PC ou para identificar alguma atitude desleal de algum técnico que esteja te passando um orçamento para reparo. Na seção Raio-X aqui do Contém Bits você pode conhecer e entender mais detalhadamente sobre cada componente, ou também pode clicar abaixo no componente que deseja, para conhecê-lo melhor.
Você Sabia?
Ultima Online
Criar um jogo é muito mais complexo do que parece. São milhares, às vezes, milhões de linhas de código. Isso não é exagero! Apenas o jogo Ultima Online possui 6.006.313 linhas de programação, totalizando 25.103.295 palavras
Máquina de Pascal
A Máquina de Pascal, criada em 1642 pelo filósofo, físico e matemático francês Blaise Pascal, é reconhecida como o primeiro computador do mundo e ele foi criado com o objetivo de calcular impostos. Saiba mais.
Space Invaders
O título Space Invaders, lançado em 1980, fez tanto sucesso em todo o mundo que as pessoas compravam o console Atari apenas para poderem jogá-lo em casa. Saiba mais sobre este incrível título clicando aqui.
Civilization
A empresa Take-Two pagou à Infogrames mais de 22 milhões de dólares pelos direitos de Civilization, em novembro de 1994. Ainda sobre este título, Sid Meier, um dos seus fundadores, é o profissional da área dos games mais premiado em todo o mundo.
Nintendo Entertainment System
O console Nintendo Entertainment System (NES), da Nintendo, detém o recorde de videogame mais clonado em todo o mundo. Já foram catalogados mais de 300 aparelhos diferentes capazes de reproduzir seus jogos! Saiba mais sobre ele aqui.










