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 sume 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/itdo Jest e blocosdescribe/itdo Vitest automaticamente.
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.
- Abra o arquivo de origem e o arquivo de teste lado a lado
No Visual Studio Code, abra seu arquivo de origem—por exemplomath.js—e crie um novo arquivo de teste chamadomath.test.jsoumath.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. - 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. - Inicie um bloco describe com um nome significativo
Digitedescribe('sum', () => {e pressione Enter. O Copilot muitas vezes sugere o blocoitautomaticamente. Se não, digiteit('deve retornar a soma de dois números', () => {e pressione Enter. O Copilot preenche o corpo do teste. - 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 blocositadicionais digitandoit('deve lidar come deixe o Copilot completar o caso de borda. - 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. Digitejest.mock('./api');para Jest ouvi.mock('./api');para Vitest. Em seguida, escrevait('deve chamar a API uma vez', () => {e o Copilot produz a configuração do mock e a asserção. - Execute os testes e itere
Após gerar o arquivo de teste, executenpm testounpx vitestpara 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.
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.
}