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 propriedadesundefined..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
Gerador de Cypress test skeleton
Gere o esqueleto de um teste Cypress (cy.visit, cy.get e assertions) a partir de URL, seletor e texto esperado. Comece a testar sua aplicação web na hora.
Gerador de Vitest test skeleton
Gera arquivo Vitest (TypeScript) com describe/it/expect para uma função importada de um módulo.
Gerador de Cartões Teste do Stripe
Lista interativa dos cartões de teste oficiais do Stripe por cenário (sucesso, decline, 3DS, fraude, expired) para sandbox.