Pular para o conteúdo
Skillpedia
Testes48 mil · #3374

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

https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/jest-skill/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/jest-skill/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
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-skill

Ou 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.md
Conteú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\".

repo: sickn33/agentic-awesome-skills

Popularidade

Estrelas no GitHub
48 mil
Posição no ranking
#3374
Licença
MIT
Atualizada em
15/10/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas