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

code-showcase-testing-patterns

Ajuda seu agente a escrever testes de unidade. Ele cria exemplos de código e usa técnicas para isolar partes do código, seguindo o ciclo TDD.

O que ela faz

Ajuda a escrever testes para seu código, garantindo que ele funcione como esperado. Ensina técnicas para criar dados de teste fáceis de usar e para simular partes do seu código que dependem de outras.

Quando usar

  • ✓Ao escrever testes unitários para verificar pequenas partes do seu código.
  • ✓Ao criar funções para gerar dados de teste repetitivos.
  • ✓Ao seguir a metodologia de desenvolvimento onde você escreve o teste antes do código.

Exemplo do que pedir para a IA

“Como posso criar um teste para verificar se o meu botão de 'salvar' funciona corretamente?”

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/code-showcase-testing-patterns/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/code-showcase-testing-patterns/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
Como funciona

Esta habilidade ensina padrões para escrever testes, como criar 'fábricas' para gerar dados de teste e como 'simular' (mockar) dependências. Ela também explica a abordagem TDD (Test-Driven Development), onde você escreve um teste que falha primeiro, depois o código para fazê-lo passar.

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 code-showcase-testing-patterns

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/code-showcase-testing-patterns/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.

Padrões e Utilitários de Teste

Quando Usar

Use esta habilidade quando precisar de padrões de teste do Jest, funções de fábrica, estratégias de mock e fluxo de trabalho TDD. Use ao escrever testes unitários, criar fábricas de teste ou seguir o ciclo TDD vermelho-verde-refatoração.

Filosofia de Teste

Desenvolvimento Orientado a Testes (TDD):

  • Escreva o teste que falha PRIMEIRO
  • Implemente o código mínimo para passar
  • Refatore após o verde
  • Nunca escreva código de produção sem um teste que falha

Testes Orientados a Comportamento:

  • Teste o comportamento, não a implementação
  • Foque em APIs públicas e requisitos de negócio
  • Evite testar detalhes de implementação
  • Use nomes de teste descritivos que descrevam o comportamento

Padrão de Fábrica:

  • Crie funções getMockX(overrides?: Partial<X>)
  • Forneça valores padrão sensatos
  • Permita sobrescrever propriedades específicas
  • Mantenha os testes DRY (Don't Repeat Yourself) e fáceis de manter

Utilitários de Teste

Função de Renderização Personalizada

Crie uma renderização personalizada que envolva componentes com provedores necessários:

// src/utils/testUtils.tsx
import { render } from '@testing-library/react-native';
import { ThemeProvider } from './theme';

export const renderWithTheme = (ui: React.ReactElement) => {
  return render(
    <ThemeProvider>{ui}</ThemeProvider>
  );
};

Uso:

import { renderWithTheme } from 'utils/testUtils';
import { screen } from '@testing-library/react-native';

it('should render component', () => {
  renderWithTheme(<MyComponent />);
  expect(screen.getByText('Hello')).toBeTruthy();
});

Padrão de Fábrica

Fábrica de Props de Componente

import { ComponentProps } from 'react';

const getMockMyComponentProps = (
  overrides?: Partial<ComponentProps<typeof MyComponent>>
) => {
  return {
    title: 'Default Title',
    count: 0,
    onPress: jest.fn(),
    isLoading: false,
    ...overrides,
  };
};

// Usage in tests
it('should render with custom title', () => {
  const props = getMockMyComponentProps({ title: 'Custom Title' });
  renderWithTheme(<MyComponent {...props} />);
  expect(screen.getByText('Custom Title')).toBeTruthy();
});

Fábrica de Dados

interface User {
  id: string;
  name: string;
  email: string;
  role: 'admin' | 'user';
}

const getMockUser = (overrides?: Partial<User>): User => {
  return {
    id: '123',
    name: 'John Doe',
    email: 'john@example.com',
    role: 'user',
    ...overrides,
  };
};

// Usage
it('should display admin badge for admin users', () => {
  const user = getMockUser({ role: 'admin' });
  renderWithTheme(<UserCard user={user} />);
  expect(screen.getByText('Admin')).toBeTruthy();
});

Padrões de Mocking

Mocking de Módulos

// Mock entire module
jest.mock('utils/analytics');

// Mock with factory function
jest.mock('utils/analytics', () => ({
  Analytics: {
    logEvent: jest.fn(),
  },
}));

// Access mock in test
const mockLogEvent = jest.requireMock('utils/analytics').Analytics.logEvent;

Mocking de Hooks GraphQL

jest.mock('./GetItems.generated', () => ({
  useGetItemsQuery: jest.fn(),
}));

const mockUseGetItemsQuery = jest.requireMock(
  './GetItems.generated'
).useGetItemsQuery as jest.Mock;

// In test
mockUseGetItemsQuery.mockReturnValue({
  data: { items: [] },
  loading: false,
  error: undefined,
});

Estrutura de Teste

describe('ComponentName', () => {
  beforeEach(() => {
    jest.clearAllMocks();
  });

  describe('Rendering', () => {
    it('should render component with default props', () => {});
    it('should render loading state when loading', () => {});
  });

  describe('User interactions', () => {
    it('should call onPress when button is clicked', async () => {});
  });

  describe('Edge cases', () => {
    it('should handle empty data gracefully', () => {});
  });
});

Padrões de Consulta

// Element must exist
expect(screen.getByText('Hello')).toBeTruthy();

// Element should not exist
expect(screen.queryByText('Goodbye')).toBeNull();

// Element appears asynchronously
await waitFor(() => {
  expect(screen.findByText('Loaded')).toBeTruthy();
});

Padrões de Interação do Usuário

import { fireEvent, screen } from '@testing-library/react-native';

it('should submit form on button click', async () => {
  const onSubmit = jest.fn();
  renderWithTheme(<LoginForm onSubmit={onSubmit} />);

  fireEvent.changeText(screen.getByLabelText('Email'), 'user@example.com');
  fireEvent.changeText(screen.getByLabelText('Password'), 'password123');

…
Perguntas frequentes

O que é TDD?

TDD significa Test-Driven Development (Desenvolvimento Guiado por Testes). A ideia é escrever um teste que falha antes de escrever o código de produção. Depois, você escreve o código mínimo necessário para fazer o teste passar e, por fim, refatora o código.

O que são 'factory functions'?

São funções que ajudam a criar dados de teste de forma organizada e reutilizável. Elas fornecem valores padrão e permitem que você altere apenas as partes que precisa para cada teste específico.

O que significa 'mockar'?

Mockar (ou simular) é criar uma versão falsa de uma parte do seu código ou de um serviço externo. Isso permite que você teste uma parte do seu código isoladamente, sem depender do comportamento real de outras partes.

Detalhes

Descrição original do autor

Jest testing patterns, factory functions, mocking strategies, and TDD workflow. Use when writing unit tests, creating test factories, or following TDD red-green-refactor cycle.

repo: sickn33/agentic-awesome-skills

Popularidade

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

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas