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.

16 de mai. de 2025

4 min de leitura

Testando Código Assíncrono com Jest

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.js
test('the data is peanut butter', () => {
  return fetchData().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 = await fetchData();
  expect(data).toBe('peanut butter');
});
``

Tratando erros com `try/catch`:

```js
test("O fetch falha com um erro", async () => {
  expect.assertions(1);
  try {
    await fetchData();
  } catch (error) {
    expect(error).toMatch("error");
  }
});

Com resolves e rejects:

test('the data is peanut butter', async () => {
  await expect(fetchData()).resolves.toBe('peanut butter');
});

test('the fetch fails with an error', async () => {
  await expect(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);
  return fetchData().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 => {
  function callback(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', () => {
  return expect(fetchData()).resolves.toBe('peanut butter');
});

test('the fetch fails with an error', () => {
  return expect(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

Imagem sobre o React
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
Imagem sobre o React
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
Imagem sobre o React
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
Imagem sobre o React
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.

16 de mai. de 20256 min de leitura

Blog DevTest

Conteúdo técnico Sobre React, Jest e testes modernos para desenvolvedores de todos os níveis

© 2025

DevTrail. Todos os direitos reservados.