Como Usar o GitHub Copilot com Jest e Vitest para Gerar Testes
🔍 WiseChecker

Como Usar o GitHub Copilot com Jest e Vitest para Gerar Testes

Você quer que o GitHub Copilot gere testes unitários para seu código JavaScript ou TypeScript usando Jest ou Vitest. Escrever testes manualmente leva tempo e muitas vezes resulta em cobertura incompleta. O Copilot pode sugerir casos de teste, mocks e asserções com base no seu código existente e no framework de testes. Este artigo mostra como configurar o Copilot para geração de testes, escrever prompts eficazes e evitar armadilhas comuns com Jest e Vitest.

Principais Conclusões: Gerando Testes com o Copilot

  • Sugestão inline via comentário: Escreva um comentário como // teste a função sum e o Copilot gera o bloco de teste.
  • Geração de testes com contexto: Abra um arquivo de teste e o Copilot lê o arquivo de origem para produzir casos de teste correspondentes.
  • Saída específica do framework: O Copilot adapta a sintaxe para blocos describe/it do Jest e blocos describe/it do Vitest automaticamente.

ADVERTISEMENT

Como o Copilot Gera Testes para Jest e Vitest

O GitHub Copilot usa o contexto dos seus arquivos abertos para inferir o framework de testes. Quando você abre um arquivo chamado test.js, spec.ts ou um arquivo dentro de uma pasta __tests__, o Copilot assume que você está escrevendo testes. Ele lê o arquivo de origem correspondente se estiver aberto no editor ou no mesmo diretório. O Copilot então gera código de teste que corresponde às convenções do framework de testes encontradas no seu projeto—Jest ou Vitest. Nenhuma configuração especial é necessária além de ter o Copilot instalado e habilitado no seu editor, normalmente Visual Studio Code ou IDEs JetBrains.

O que o Copilot Procura para Detectar o Framework

O Copilot verifica seu projeto em busca de jest.config.js, vitest.config.ts ou entradas no package.json para Jest ou Vitest. Se encontrar um arquivo de configuração, ele usa a estrutura e as opções definidas ali. Se nenhuma configuração for encontrada, o Copilot usa a sintaxe do Jest por padrão, pois o Jest é mais amplamente utilizado. Você pode substituir isso adicionando um comentário no topo do seu arquivo de teste, como // @vitest-environment jsdom para Vitest. O Copilot também respeita padrões de teste existentes no seu código—se você já tem testes usando vi.fn() (Vitest) ou jest.fn() (Jest), o Copilot continua com esse estilo.

Passos para Gerar Testes com o Copilot no Visual Studio Code

Siga estes passos para fazer o Copilot gerar casos de teste para suas funções. Os passos assumem que você tem a extensão GitHub Copilot instalada e ativa no Visual Studio Code. A mesma abordagem funciona em IDEs JetBrains com o plugin do Copilot.

  1. Abra o arquivo de origem e o arquivo de teste lado a lado
    No Visual Studio Code, abra seu arquivo de origem—por exemplo math.js—e crie um novo arquivo de teste chamado math.test.js ou math.spec.ts. Coloque os arquivos no mesmo diretório ou em uma pasta __tests__. O Copilot usa o arquivo de origem para entender as assinaturas das funções e as importações.
  2. Escreva uma declaração de importação para a função sob teste
    No arquivo de teste, digite a linha de importação manualmente ou deixe o Copilot completar automaticamente. Por exemplo: import { sum } from './math';. Isso dá ao Copilot a referência exata da função.
  3. Inicie um bloco describe com um nome significativo
    Digite describe('sum', () => { e pressione Enter. O Copilot muitas vezes sugere o bloco it automaticamente. Se não, digite it('deve retornar a soma de dois números', () => { e pressione Enter. O Copilot preenche o corpo do teste.
  4. Aceite ou modifique o teste sugerido
    Pressione Tab para aceitar a sugestão. Revise o teste gerado—o Copilot pode incluir casos de borda como zero, números negativos ou erros de tipo. Adicione blocos it adicionais digitando it('deve lidar com e deixe o Copilot completar o caso de borda.
  5. Gere mocks para dependências externas
    Se sua função chama uma API ou um banco de dados, o Copilot pode gerar funções mock. Digite jest.mock('./api'); para Jest ou vi.mock('./api'); para Vitest. Em seguida, escreva it('deve chamar a API uma vez', () => { e o Copilot produz a configuração do mock e a asserção.
  6. Execute os testes e itere
    Após gerar o arquivo de teste, execute npm test ou npx vitest para executar os testes. Se um teste falhar, abra o arquivo de teste e coloque o cursor na linha que falhou. O Copilot pode sugerir uma correção com base na mensagem de erro no terminal.

ADVERTISEMENT

Problemas Comuns Quando o Copilot Gera Testes

O Copilot Gera Sintaxe do Jest para um Projeto Vitest

O Copilot às vezes gera jest.fn() ou jest.mock() mesmo quando seu projeto usa Vitest. Isso acontece quando o Copilot não encontra um arquivo de configuração do Vitest ou quando o arquivo de teste não tem um comentário específico do Vitest. Para corrigir, adicione // @vitest-environment node ou // @vitest-environment jsdom no topo do seu arquivo de teste. O Copilot então muda para a sintaxe do Vitest para todas as sugestões subsequentes. Alternativamente, renomeie seu arquivo de teste para usar a extensão .spec.ts e garanta que vitest.config.ts exista na raiz do projeto.

O Copilot Não Sugere Testes de Forma Alguma

Se o Copilot permanecer em silêncio quando você digita describe ou it, o editor pode não reconhecer o contexto do arquivo de teste. Verifique se a extensão do seu arquivo é .test.js, .test.ts, .spec.js ou .spec.ts. Também confirme se o Copilot está habilitado na barra de status—clique no ícone do Copilot e garanta que ele mostre uma marca de verificação. Se o problema persistir, feche e reabra o arquivo para atualizar o contexto.

O Copilot Gera Asserções Incompletas ou Incorretas

O Copilot pode produzir corpos de teste que não têm declarações expect ou usam matchers errados. Isso ocorre frequentemente quando a função de origem tem lógica complexa ou múltiplos caminhos de retorno. Para melhorar as sugestões, escreva um comentário detalhado antes do bloco it. Por exemplo: // teste que sum retorna 5 quando as entradas são 2 e 3. O Copilot usa o comentário como um prompt e gera uma asserção mais precisa.

O Copilot Repete o Mesmo Caso de Teste

Às vezes o Copilot sugere o mesmo corpo de teste para múltiplos blocos it. Isso acontece quando a assinatura da função é simples e o Copilot tem contexto limitado. Para obter testes variados, adicione comentários que descrevam cenários diferentes. Por exemplo: // teste com números negativos e // teste com entrada de string. Cada comentário leva a uma sugestão de teste distinta.

Copilot com Jest vs Copilot com Vitest: Principais Diferenças

Item Jest Vitest
Sintaxe padrão jest.fn(), jest.mock(), jest.spyOn() vi.fn(), vi.mock(), vi.spyOn()
Detecção de configuração jest.config.js ou jest no package.json vitest.config.ts ou vitest no package.json
Comentários de ambiente Não necessário—Jest usa testEnvironment na configuração Opcional, mas recomendado: // @vitest-environment jsdom
Comportamento de reset de mocks jest.clearAllMocks() no beforeEach vi.clearAllMocks() no beforeEach
Velocidade do executor de testes Mais lento para projetos grandes devido à arquitetura do Jest Mais rápido porque o Vitest usa o pipeline de transformação do Vite

Agora você pode gerar testes unitários com o GitHub Copilot usando tanto Jest quanto Vitest. Comece abrindo seu arquivo de origem e o arquivo de teste juntos. Escreva comentários claros para casos de borda para obter melhores sugestões do Copilot. Para uso avançado, tente escrever um comentário que descreva um cenário de teste com falha—o Copilot pode sugerir a correção antes de você escrever o código.

}

ADVERTISEMENT