1001Ferramentas
🃏Geradores

Gerador de Jest test skeleton

Gere o esqueleto de um teste Jest com describe, beforeEach e um teste de exemplo já importando o seu módulo. Comece a testar seu código JavaScript na hora.


  

Jest: o framework de testes JavaScript que virou padrão

O Jest é um framework de testes open-source criado no Facebook em 2014 por Christoph Pojer, originalmente para testar o código do React, mas que rapidamente foi adotado por todo o ecossistema JavaScript. O grande apelo é a filosofia zero-config: basta instalar o jest, nomear arquivos como *.test.js ou colocá-los em __tests__/ e o runner descobre os testes, transpila via Babel, executa em workers paralelos e gera relatório de cobertura — sem precisar escrever uma linha de configuração. Por anos o Jest foi a escolha de fato para projetos React, Node.js, Next.js, Express e CRA, e ainda alimenta a maioria dos pipelines de CI legados.

Um skeleton Jest tem três blocos: describe('grupo', () => { ... }) para agrupar testes relacionados, test('nome', () => {}) (alias it) para declarar cada caso e expect(valor).toBe(esperado) para fazer asserções. O gerador desta página produz exatamente esse esqueleto, para você colar a função sob teste e começar a iterar em segundos.

Cheat sheet de matchers

O Jest oferece uma API extensa de matchers. Os mais usados são:

  • .toBe(x) — igualdade estrita com ===, ideal para primitivos.
  • .toEqual(obj) — igualdade profunda recursiva para objetos e arrays.
  • .toStrictEqual(obj) — como .toEqual, mas também confere classe e propriedades undefined.
  • .toMatchObject(parcial) — verifica se um subconjunto de propriedades bate.
  • .toBeNull(), .toBeUndefined(), .toBeTruthy(), .toBeFalsy() — sentinelas de tipo/valor.
  • .toContain(item), .toHaveLength(n) — para arrays e strings.
  • .toMatch(/regex/) — match de padrão em strings.
  • .toThrow() ou .toThrow(/msg/) — verifica exceções.

Testes async, mocks e spies

Para promises e código assíncrono, marque o teste como async e use await, ou encadeie .resolves / .rejects no expect. Para APIs antigas de callback ainda dá para receber o argumento done e chamá-lo no fim. Mocks são cidadãos de primeira classe: jest.fn() cria uma função mockada com asserções como .toHaveBeenCalledWith(...); jest.spyOn(obj, 'metodo') envolve um método existente, permitindo observar e restaurar depois; jest.mock('modulo') substitui um módulo inteiro — o Jest auto-mocka por padrão, mas você pode passar uma factory, e qualquer arquivo em uma pasta __mocks__/ adjacente é detectado automaticamente.

Hooks de setup, snapshots e cobertura

Use beforeEach / afterEach para fixtures por teste e beforeAll / afterAll para recursos compartilhados como conexões de banco. Testes de snapshot com expect(componente).toMatchSnapshot() serializam a saída em disco e sinalizam qualquer mudança inesperada — muito útil para renderização React ou payloads JSON grandes. .toMatchInlineSnapshot() guarda o snapshot no próprio arquivo de teste, ótimo para fixtures pequenas. Cobertura é nativa via Istanbul: rode jest --coverage para obter relatório de linhas, branches e funções, e imponha mínimos com coverageThreshold.

Configuração, watch mode e CI

Um jest.config.js típico define testEnvironment (node para backend, jsdom para DOM), um transform (Babel, ts-jest, @swc/jest ou esbuild-jest), moduleNameMapper para path aliases, setupFilesAfterEach e padrões em testMatch. No desenvolvimento, o runner brilha: jest --watch roda apenas os testes afetados por mudanças não commitadas e expõe filtros interativos; --watchAll reroda tudo. No CI, o paralelismo é automático via --maxWorkers, distribuindo arquivos de teste entre os cores.

Pegadinhas e status do ecossistema

Pegadinhas comuns: um bloco jest no package.json sobrescreve silenciosamente o jest.config.js; o trio jest.clearAllMocks (limpa chamadas), jest.resetAllMocks (limpa chamadas e implementações) e jest.restoreAllMocks (só spies, restaura os originais) não são intercambiáveis; transforms do Babel costumam dominar o tempo de execução, e trocar para @swc/jest ou esbuild-jest costuma reduzir o tempo da suíte em 3-5x. O Jest ainda é muito popular, mas o Vitest cresce rápido, especialmente em projetos Vue e baseados em Vite.

Perguntas frequentes

O Jest funciona com TypeScript? Sim — com ts-jest para checagem de tipo completa ou babel-jest / @swc/jest quando você só precisa de transpilação (esses são bem mais rápidos).

Posso rodar testes em paralelo? Sim, esse é o padrão — o Jest sobe workers por arquivo, e você limita com --maxWorkers=N ou força execução serial com --runInBand.

Como exigir cobertura mínima? Configure coverageThreshold com metas globais e por arquivo; a execução falha se a meta não for atingida.

Quando usar describe vs arquivos separados? Agrupe casos muito relacionados (mesma função, mesma fixture) sob um describe; quebre em arquivos diferentes quando fixtures ou ambientes divergem.

O gerador envia meu código para algum lugar? Não — o skeleton é gerado inteiramente no seu navegador. Nada é enviado nem armazenado no servidor.

Ferramentas Relacionadas