
Jest
Configuração e Desmontagem
Muitas vezes ao escrever testes você tem algum trabalho de configuração que precisa acontecer antes de executar testes, e você tem algum trabalho de acabamento que precisa acontecer após os testes executarem. Jest fornece funções de auxilio para lidar com isso.
• 16 de mai. de 2025
• 5 min de leitura

Repetindo Setup no Jest – Guia Prático com Dicas Reais
Quando você escreve testes com Jest, cedo ou tarde vai perceber que algumas configurações precisam ser repetidas antes ou depois de cada teste. E fazer isso manualmente em cada test()
... ninguém merece, né?
Hooks beforeEach
e afterEach
Esses dois são como o “abrir e fechar da loja” para cada teste:
beforeEach(() => { initializeCityDatabase(); }); afterEach(() => { clearCityDatabase(); });
Ou seja:
-
- Antes de cada teste, a base de dados é inicializada;
-
- Depois de cada teste, ela é limpa.
Exemplo:
test('cidade Vienna está no banco', () => { expect(isCity('Vienna')).toBeTruthy(); }); test('cidade San Juan está no banco', () => { expect(isCity('San Juan')).toBeTruthy(); });
Dica pessoal:
Se você perceber que algum teste funciona sozinho mas quebra quando roda com os outros, pode apostar que o problema é algo que não está sendo resetado direito. Sempre que tiver dúvida, tente isolar o teste com test.only(...)
.
E quando só precisa configurar uma vez?
Aí entra o beforeAll
e afterAll
, perfeitos pra quando sua configuração serve para todos os testes e só precisa ser feita uma vez.
beforeAll(() => { return initializeCityDatabase(); }); afterAll(() => { return clearCityDatabase(); });
Hooks aninhados: escopo importa
Quando você declara hooks dentro de um describe
, eles só valem para aquele bloco:
beforeEach(() => { initializeCityDatabase(); }); describe('testes com comida', () => { beforeEach(() => { initializeFoodDatabase(); }); test('Vienna combina com Schnitzel', () => { expect(isValidCityFoodPair('Vienna', 'Wiener Schnitzel')).toBe(true); }); test('San Juan ama Mofongo', () => { expect(isValidCityFoodPair('San Juan', 'Mofongo')).toBe(true); }); });
Observação:
O beforeEach
de fora roda antes do beforeEach
de dentro. Fique de olho na ordem!
Ordem de execução
Esse exemplo mostra bem como o Jest monta os testes antes de rodar qualquer coisa:
beforeAll(() => console.log(' beforeAll global')); afterAll(() => console.log(' afterAll global')); beforeEach(() => console.log(' beforeEach global')); afterEach(() => console.log(' afterEach global')); test('🔬 teste fora do describe', () => console.log(' teste 1')); describe('Bloco isolado', () => { beforeAll(() => console.log(' beforeAll bloco')); afterAll(() => console.log(' afterAll bloco')); beforeEach(() => console.log(' beforeEach bloco')); afterEach(() => console.log(' afterEach bloco')); test(' teste dentro do describe', () => console.log(' teste 2')); });
Dica bônus: Evite "testes sujos"
Sempre que você ver bugs “aleatórios”, onde um teste interfere no outro, pense:
“Será que estou deixando algo de um teste vazar para os outros?”
Use beforeEach
para resetar variáveis globais, mocks ou bancos de dados em memória.
Testando com test.only
test.only('só este será executado', () => { expect(1 + 1).toBe(3); // falha intencional }); test('esse aqui será ignorado por enquanto', () => { expect(true).toBe(true); });
Outras ideias de testes para praticar:
- Simular um login e limpar a sessão após cada teste.
- Criar um mock de API e restaurar ele com
jest.resetAllMocks()
noafterEach
. - Testar integração com um arquivo em disco (ex: criar, ler, deletar em sequência com hooks).
Tags
Jest
Artigos Relacionados



