Capítulo 18
Testes no backend
2 min de leitura 421 palavras 1 gravura
Neste capítulo você vai escrever um teste automatizado da função de validação. O projeto-fio é o Ateliê Boa Viagem, ateliê digital fictício em Boa Viagem, Recife.
Seu ponto de partida
Use o exemplo 18-testes-backend do pacote anexo e copie inicio/ para uma pasta de prática fora do original. A raiz do exemplo é a referência completa desta etapa.
Use servidor só em 127.0.0.1 quando o README do exemplo pedir HTTP local. Abrir ou testar não publica nada.
Como praticar
Leia → copie ou digite → mude uma coisa → preveja → salve → recarregue → confira. Restaure cada experiência antes da próxima. Faça as atividades antes de abrir as respostas comentadas.
Separar lógica pura
Extraia validarOficina(nome) para um módulo testável sem HTTP.
Faça na sua cópia
Confira o trecho no contexto do exemplo antes de mudar.
function validarOficina(nome) {
if (!nome || !String(nome).trim()) return { ok: false, erro: 'Nome obrigatório' };
return { ok: true, nome: String(nome).trim() };
}
Mude uma coisa e preveja
Rejeite nomes com menos de 3 caracteres.
Anote o que espera observar antes de salvar e recarregar.
Recarregue e confira
O teste novo falha até ajustar a função.
Se não acontecer
Rode node —test no exemplo.

Teste primeiro ou logo após
Escreva o caso que descreve o comportamento. Veja falhar. Faça passar. O Node traz um runner estável em versões recentes.
Faça na sua cópia
Confira o trecho no contexto do exemplo antes de mudar.
const test = require('node:test');
const assert = require('node:assert/strict');
test('rejeita vazio', () => {
assert.equal(validarOficina('').ok, false);
});
Mude uma coisa e preveja
Acrescente teste de nome válido.
Anote o que espera observar antes de salvar e recarregar.
Recarregue e confira
A suíte passa.
Se não acontecer
Exporte a função no módulo.
Teste não substitui conferência manual
Ainda abra o endpoint e a página. Teste automatizado pega regressões na lógica; UI pede olho e teclado.
Faça na sua cópia
Confira o trecho no contexto do exemplo antes de mudar.
unitário + manual local
Mude uma coisa e preveja
Rode a suíte duas vezes seguidas.
Anote o que espera observar antes de salvar e recarregar.
Recarregue e confira
Resultado estável.
Se não acontecer
Evite dependência de relógio ou rede neste volume.
Atividades
Atividade 1
Por que extrair validarOficina?
Atividade 2
Qual o ciclo mínimo de TDD citado?
Atividade 3
Teste unitário elimina teste manual?
Respostas comentadas
Resposta da atividade 1
Testar sem subir servidor HTTP.
Resposta da atividade 2
Falhar → passar → (depois) limpar.
Resposta da atividade 3
Não.
O arquivo completo
Referência do exemplo 18-testes-backend, reproduzida aqui para que você possa conferir sem sair da página.
validar.js
function validarOficina(nome) {
if (!nome || !String(nome).trim()) return { ok: false, erro: 'Nome obrigatório' };
const n = String(nome).trim();
if (n.length < 3) return { ok: false, erro: 'Mínimo 3 caracteres' };
return { ok: true, nome: n };
}
module.exports = { validarOficina };