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:
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.
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() no afterEach.
Testar integração com um arquivo em disco (ex: criar, ler, deletar em sequência com hooks).
Tags
Jest
Artigos Relacionados
Jest
Test Driven Development (TDD) com Jest
Test Driven Development, mais conhecido como TDD, é uma abordagem de desenvolvimento de software onde os testes são escritos antes do código de produção. O objetivo principal do TDD é garantir que cada parte do sistema seja testada de forma automatizada, tornando o processo de desenvolvimento mais seguro, previsível e de alta qualidade.
22 de mai. de 20258 min de leitura
Jest
Debugging com Jest: Guia Completo para Solucionar Testes Falhando
Testes falhando são comuns durante o desenvolvimento de software, e depurá-los rapidamente é essencial para produtividade. Neste guia, você vai aprender como utilizar o Chrome DevTools para depurar testes Jest e descobrirá as melhores práticas para resolver problemas comuns de forma eficiente.
20 de mai. de 20255 min de leitura
Jest
Cobertura de Testes com Jest (--coverage)
A cobertura de testes, ou coverage, é uma métrica que mede o quanto do seu código está sendo testado por testes automatizados. Quando você executa testes com Jest utilizando a flag --coverage, ele gera um relatório detalhado que mostra quais partes do seu código estão ou não sendo testadas. Entender esse relatório é fundamental para garantir a qualidade e a segurança da sua aplicação.
16 de mai. de 20256 min de leitura
Jest
Testando Código Assíncrono com Jest
É comum em JavaScript executar código de forma assíncrona. Quando você tiver código assíncrono, o Jest precisa saber quando ele foi concluído para então seguir com os testes seguintes. Felizmente, o Jest oferece várias formas de lidar com isso.