É 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.
• 16 de mai. de 2025
• 4 min de leitura
Promises
Você pode retornar uma Promise no seu teste, e o Jest aguardará até que ela seja resolvida. Se ela for rejeitada, o teste irá falhar.
// fetch.test.jstest('the data is peanut butter',()=>{returnfetchData().then(data=>{expect(data).toBe('peanut butter');});});
Dica: Certifique-se de retornar a Promise. Se não fizer isso, o Jest pode encerrar o teste antes dela ser resolvida.
Usando async/await
Você também pode usar async/await, que torna o código mais legível.
test('os dados são manteiga de amendoim',async()=>{const data =awaitfetchData();expect(data).toBe('peanut butter');});``Tratando erros com `try/catch`:```js
test("O fetch falha com um erro",async()=>{ expect.assertions(1);try{awaitfetchData();}catch(error){expect(error).toMatch("error");}});
Com resolves e rejects:
test('the data is peanut butter',async()=>{awaitexpect(fetchData()).resolves.toBe('peanut butter');});test('the fetch fails with an error',async()=>{awaitexpect(fetchData()).rejects.toMatch('error');});
Atenção
Não se esqueça de usar return ou await. Sem isso, o Jest pode considerar o teste finalizado antes da execução dos blocos de expect().
Quando você espera erro, use também expect.assertions() para garantir que as asserções foram chamadas:
test('the fetch fails with an error',()=>{ expect.assertions(1);returnfetchData().catch(error=>expect(error).toMatch('error'));});
Callbacks
Se você estiver usando callbacks ao invés de Promises, o Jest também permite lidar com isso usando o argumento done:
test('the data is peanut butter',done=>{functioncallback(error, data){if(error){done(error);return;}try{expect(data).toBe('peanut butter');done();}catch(error){done(error);}}fetchData(callback);});
O Jest lança erro se você combinar done() com Promises no mesmo teste — evite isso.
.resolves / .rejects
Esses matchers ajudam a deixar o código mais limpo quando trabalhando com Promises.
test('the data is peanut butter',()=>{returnexpect(fetchData()).resolves.toBe('peanut butter');});test('the fetch fails with an error',()=>{returnexpect(fetchData()).rejects.toMatch('error');});
Dica extra
Você pode usar bibliotecas como msw para mockar APIs em testes, tornando os cenários mais realistas.
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
Resolução de Problemas com Jest
Encontrou um erro inesperado? Este guia vai te ajudar a depurar e resolver problemas comuns ao usar o Jest.