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 2025

6 min de leitura

Resolução de Problemas com Jest

Testes falhando sem motivo aparente

Para investigar falhas misteriosas, adicione a instrução debugger; dentro de qualquer teste e execute o comando abaixo no terminal do seu projeto:

node --inspect-brk node_modules/.bin/jest --runInBand [outros argumentos]

Se você estiver no Windows:

node --inspect-brk ./node_modules/jest/bin/jest.js --runInBand [outros argumentos]

Isso fará com que o Jest rode em um processo Node.js aguardando a conexão de um depurador externo.

No Google Chrome:

  • Acesse chrome://inspect.
  • Clique em "Abrir DevTools Dedicados para Node".
  • Conecte-se ao endereço exibido no terminal (geralmente localhost:9229).

Assim que conectado, pressione o botão "play" no DevTools para continuar. Quando o Jest atingir a instrução debugger;, a execução será pausada para inspeção.

Depurando no VS Code

1. Rodando manualmente e anexando o depurador:

Execute o comando:

node --inspect-brk node_modules/.bin/jest --runInBand

Depois, adicione esta configuração no seu launch.json:

{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "node",
      "request": "attach",
      "name": "Attach to Jest",
      "port": 9229
    }
  ]
}

2. Iniciando automaticamente e depurando:

Para sistemas Unix/Linux/macOS:

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Debug Jest Tests",
      "type": "node",
      "request": "launch",
      "runtimeArgs": [
        "--inspect-brk",
        "${workspaceRoot}/node_modules/.bin/jest",
        "--runInBand"
      ],
      "console": "integratedTerminal",
      "internalConsoleOptions": "neverOpen"
    }
  ]
}

Para Windows:

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Debug Jest Tests",
      "type": "node",
      "request": "launch",
      "runtimeArgs": [
        "--inspect-brk",
        "${workspaceRoot}/node_modules/jest/bin/jest.js",
        "--runInBand"
      ],
      "console": "integratedTerminal",
      "internalConsoleOptions": "neverOpen"
    }
  ]
}

Para projetos criados com Create React App:

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Debug CRA Tests",
      "type": "node",
      "request": "launch",
      "runtimeExecutable": "${workspaceRoot}/node_modules/.bin/react-scripts",
      "args": [
        "test",
        "--runInBand",
        "--no-cache",
        "--env=jsdom",
        "--watchAll=false"
      ],
      "cwd": "${workspaceRoot}",
      "console": "integratedTerminal",
      "internalConsoleOptions": "neverOpen"
    }
  ]
}

Problemas comuns e soluções rápidas

1. Cache do Jest

Se você atualizou Babel ou scripts de transformação e as mudanças não refletiram, execute os testes com:

jest --no-cache

2. Promessas não resolvidas

Se receber o erro:

Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.

Isso geralmente indica uma promessa que nunca foi resolvida.

  • Garanta que a Promessa seja corretamente resolvida.
  • Use uma Promise "real" para evitar conflitos:
globalThis.Promise = jest.requireActual('promise');
  • Aumente o tempo limite do teste, se necessário:
jest.setTimeout(10000); // 10 segundos

3. coveragePathIgnorePatterns não funciona

Certifique-se de que você não está usando o plugin babel-plugin-istanbul. Jest já gerencia a cobertura de testes usando o Istanbul nativamente.

4. Testes devem ser definidos de forma síncrona

Evite definir testes dentro de funções assíncronas ou timeouts:

// Errado - Não faça isso
setTimeout(() => {
  it('should work', () => expect(1).toBe(1));
}, 0);

Isso impede que o Jest colete os testes corretamente.

Dica: Defina sempre os testes de forma direta no escopo do arquivo.

Outras boas práticas

  • Mantenha suas dependências atualizadas.
  • Use --runInBand quando precisar debugar ou em ambientes limitados de CPU.
  • Para projetos grandes, ative verbose: true no Jest para ver claramente quais testes estão sendo executados.

Com essas dicas, resolver problemas no Jest será muito mais tranquilo. Se os erros persistirem, lembre-se de consultar também a documentação oficial do Jest.

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

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 20254 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.