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?
Tetris
Desde o seu lançamento, em 1985, o fantástico jogo Tetris vende pelo menos 70 milhões de unidades por ano em todo o mundo! Os dados são oficiais e fornecidos pela THQ, uma das distribuidoras do título.
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.
Recorde de patentes
A IBM detém o recorde de patentes em um único ano, atingindo a marca de 4186 registros no ano de 2008. Clique aqui e saiba mais sobre esta gigante do mundo da tecnologia.
Computadores de 1,5 tonelada
Em 1949 a revista Popular Mechanics fez uma previsão para o futuro, dizendo: "Um dia os computadores pesarão menos do que 1,5 tonelada". E pensar que temos smartphones capazes de realizar milhões de vezes mais operações do que os computadores daquela época.
Asteroids
O título Asteroids, do Atari, possui recorde de pontuação há 30 anos. Em 1982 um americano chamado Scott Safran atingiu a marca de 41.336.440. Atualmente ele faz parte de um minúsculo grupo de jogadores que conseguiram manter seus recordes por mais de 30 anos.










