jest-skill
Gera testes unitários e de integração em JavaScript ou TypeScript usando Jest. Útil para verificar o funcionamento de partes do código e componentes.
O que ela faz
Esta ferramenta ajuda a criar testes automáticos para seu código JavaScript ou TypeScript usando a biblioteca Jest. Ela pode gerar testes básicos, simular partes do seu código (mocking), testar funções assíncronas e até mesmo componentes de React.
Quando usar
- ✓Quando você precisa verificar se seu código funciona como esperado.
- ✓Para garantir que novas mudanças não quebrem funcionalidades existentes.
- ✓Ao criar testes para simular dependências externas ou funções complexas.
Exemplo do que pedir para a IA
“Gere um teste para a função 'somar' que recebe dois números e retorna a soma.”
Quer saber mais? Abra as seções abaixo.
Como usar
O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.
Link da skill
Mensagem pronta para colar
Como funciona
A ferramenta usa a biblioteca Jest para escrever testes. Ela cria blocos de código chamados 'describe' e 'it' para organizar os testes e usa 'expect' para verificar se os resultados são os esperados.
Instalação
Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.
No terminal (Claude Code, Codex, Cursor), na pasta do projeto:
npx skills add sickn33/agentic-awesome-skills --skill jest-skillOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/jest-skill/SKILL.md -o SKILL.mdConteúdo técnico (SKILL.md)
Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.
Habilidade de Testes com Jest
Quando Usar
Use esta habilidade quando precisar gerar testes unitários e de integração com Jest em JavaScript ou TypeScript. Abrange mocking, snapshots, testes assíncronos e testes de componentes React. Use quando o usuário mencionar "Jest", "describe/it/expect", "jest.mock", "toMatchSnapshot". Dispara em: "Jest", "expect().toBe()", "jest.mock",...
Padrões Principais
Teste Básico
describe('Calculator', () => {
let calc;
beforeEach(() => { calc = new Calculator(); });
test('adds two numbers', () => {
expect(calc.add(2, 3)).toBe(5);
});
test('throws on division by zero', () => {
expect(() => calc.divide(10, 0)).toThrow('Division by zero');
});
});
Matchers
expect(value).toBe(exact); // === strict
expect(value).toEqual(object); // deep equality
expect(value).toBeTruthy();
expect(value).toBeNull();
expect(value).toBeGreaterThan(3);
expect(value).toBeCloseTo(0.3, 5);
expect(str).toMatch(/regex/);
expect(arr).toContain(item);
expect(arr).toHaveLength(3);
expect(obj).toHaveProperty('name');
expect(obj).toMatchObject({ name: 'Alice' });
expect(() => fn()).toThrow(CustomError);
Mocking
// Mock function
const mockFn = jest.fn();
mockFn.mockReturnValue(42);
mockFn.mockResolvedValue({ data: 'test' });
expect(mockFn).toHaveBeenCalledWith('arg1');
expect(mockFn).toHaveBeenCalledTimes(1);
// Mock module
jest.mock('./database');
const db = require('./database');
db.getUser.mockResolvedValue({ name: 'Alice' });
// Mock with implementation
jest.mock('./api', () => ({
fetchUsers: jest.fn().mockResolvedValue([{ name: 'Alice' }]),
}));
// Spy
const spy = jest.spyOn(console, 'log').mockImplementation();
expect(spy).toHaveBeenCalledWith('expected');
spy.mockRestore();
// Fake timers
jest.useFakeTimers();
jest.advanceTimersByTime(1000);
jest.useRealTimers();
Testes Assíncronos
test('fetches users', async () => {
const users = await fetchUsers();
expect(users).toHaveLength(3);
});
test('resolves with data', () => {
return expect(fetchData()).resolves.toEqual({ data: 'value' });
});
test('rejects with error', () => {
return expect(fetchBadData()).rejects.toThrow('not found');
});
Testes de Componentes React (Testing Library)
import { render, screen, fireEvent, waitFor } from '@testing-library/react';
import '@testing-library/jest-dom';
import LoginForm from './LoginForm';
test('submits login form', async () => {
const onSubmit = jest.fn();
render(<LoginForm onSubmit={onSubmit} />);
fireEvent.change(screen.getByLabelText('Email'), {
target: { value: 'user@test.com' },
});
fireEvent.change(screen.getByLabelText('Password'), {
target: { value: 'password123' },
});
fireEvent.click(screen.getByRole('button', { name: /login/i }));
await waitFor(() => {
expect(onSubmit).toHaveBeenCalledWith({
email: 'user@test.com', password: 'password123',
});
});
});
Testes de Snapshot
test('renders correctly', () => {
const tree = renderer.create(<Button label="Click" />).toJSON();
expect(tree).toMatchSnapshot();
});
// Update: jest --updateSnapshot
Anti-Padrões
| Ruim | Bom | Por quê |
|---|---|---|
expect(x === y).toBe(true) |
expect(x).toBe(y) |
Melhores erros |
Sem await em assíncronos |
Sempre await |
Falhas mascaradas |
| Snapshot de tudo | Snapshot da UI, afirmação da lógica | Fadiga de snapshot |
Referência Rápida
| Tarefa | Comando |
|---|---|
| Executar todos | npx jest |
| Observar | npx jest --watch |
| Cobertura | npx jest --coverage |
| Atualizar snapshots | npx jest --updateSnapshot |
| Executar arquivo | npx jest tests/calc.test.js |
| Teste único | test.only('name', () => {}) |
Padrões Avançados
Para padrões de nível de produção, veja reference/playbook.md:
| Seção | O que está incluído |
|---|---|
| §1 Configuração de Produção | Configurações Node + React, aliases de caminho, limites de cobertura |
| §2 Mergulho Profundo em Mocking | Mocks de módulo/parciais/manuais, spies, timers, variáveis de ambiente |
| §3 Padrões Assíncronos | Promises, rejeições, event emitters, streams |
| §4 test.each | Array, template tag, describe.each para testes orientados a tabela |
| §5 Matchers Personalizados | toBeWithinRange, toBeValidEmail, declarações TypeScript |
| §6 React Testing Library | userEvent, hooks, context providers |
| §7 Testes de Snapshot | Componente, inline, matchers de propriedade |
| §8 Testes de Serviço de API | axios mockado, padrões CRUD, tratamento de erros |
…
Perguntas frequentes
O que é 'mocking'?
Mocking é como criar um 'substituto' para uma parte do seu código (como uma função ou um módulo) para que você possa testar outra parte isoladamente, sem depender do substituto.
O que são 'snapshots'?
Snapshots são como 'fotos' do resultado esperado do seu código. Se o resultado mudar inesperadamente, o teste falha, ajudando a identificar bugs.
Como testo código que usa 'setTimeout' ou 'fetch'?
Jest tem ferramentas especiais para lidar com código assíncrono, como 'async/await' e 'jest.useFakeTimers()', para que você possa testar essas operações de forma confiável.
Detalhes
Descrição original do autor
Generates Jest unit and integration tests in JavaScript or TypeScript. Covers mocking, snapshots, async testing, and React component testing. Use when user mentions \"Jest\", \"describe/it/expect\", \"jest.mock\", \"toMatchSnapshot\".
Popularidade
- Estrelas no GitHub
- 48 mil
- Posição no ranking
- #3374
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
00-andruia-consultant
Ajuda seu agente a iniciar ou melhorar projetos de IA. Ele analisa código, sugere ferramentas e cria planos de ação em espanhol.
sickn33/agentic-awesome-skills
007
Faz seu agente realizar auditorias de segurança e modelagem de ameaças. É útil para proteger projetos contra ataques e vulnerabilidades.
sickn33/agentic-awesome-skills
10-andruia-skill-smith
Ajuda seu agente a criar ou melhorar ferramentas de IA. Ele define como as ferramentas funcionam, escreve a documentação e valida a estrutura.
sickn33/agentic-awesome-skills
20-andruia-niche-intelligence
Faz seu agente criar um resumo sobre um setor específico. É útil para entender o contexto, regras, padrões de uso e riscos de um projeto, usando fontes confiáveis.
sickn33/agentic-awesome-skills
Skills parecidas
cpp-testing
Faz seu agente escrever e melhorar testes para código C++. Ajuda a configurar ferramentas de teste e a corrigir erros.
affaan-m/ECC
csharp-testing
Ajuda seu agente a criar testes para código C# e .NET. Ele usa as melhores práticas para garantir que os testes sejam eficientes e confiáveis.
affaan-m/ECC
django-tdd
Faz seu agente aplicar estratégias de teste para Django com pytest-django e TDD. É útil para escrever testes robustos e garantir a qualidade do código, especialmente para APIs DRF.
affaan-m/ECC