testing-patterns
Faz seu agente usar técnicas avançadas para escrever testes de código. Ajuda a criar dados de teste e a seguir um processo para encontrar e corrigir erros.
O que ela faz
Esta skill ensina como escrever testes para seu código, garantindo que ele funcione como esperado. Ela mostra como criar dados de exemplo (fábricas), como simular partes do seu código (mocks) e como seguir um processo para escrever testes.
Quando usar
- ✓Ao escrever testes para verificar se seu código está correto.
- ✓Ao criar dados de exemplo para usar nos testes.
- ✓Ao seguir o ciclo de TDD (escrever teste primeiro, depois o código).
Exemplo do que pedir para a IA
“Como posso criar um teste para verificar se um botão de login funciona?”
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 skill usa padrões como TDD e BDD para guiar a escrita de testes. Ela também fornece exemplos de como criar funções de fábrica para gerar dados de teste e como usar mocks para isolar partes do código.
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 testing-patternsOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/testing-patterns/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.
Padrões e Utilitários de Teste
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" (tudo passando)
- Nunca escreva código de produção sem um teste que falha
Testes Orientados a Comportamento (Behavior-Driven Testing):
- 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 testes descritivos que expliquem o comportamento
Padrão Factory (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 - Não se Repita) e fáceis de manter
Utilitários de Teste
Função de Renderização Personalizada
Crie uma função de 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 Factory (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.todo('should render component with default props');
it.todo('should render loading state when loading');
});
describe('User interactions', () => {
it.todo('should call onPress when button is clicked');
});
describe('Edge cases', () => {
it.todo('should handle empty data gracefully');
});
});
Padrões de Query
// Element must exist
expect(screen.getByText('Hello')).toBeTruthy();
// Element should not exist
expect(screen.queryByText('Goodbye')).toBeNull();
// Element appears asynchronously
// async-appearance-example: await the element, not the Promise
expect(await screen.findByText('Loaded')).toBeTruthy();
Padrões de Interação do Usuário
import { fireEvent, screen, waitFor } 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');
fireEvent.press(screen.getByTestId('login-button'));
await waitFor(() => {
expect(onSubmit).toHaveBeenCalled();
});
});
Anti-Padrões a Evitar
Testar Comportamento de Mock em Vez de Comportamento Real
…
Perguntas frequentes
O que é TDD?
TDD significa Test-Driven Development (Desenvolvimento Guiado por Testes). É uma prática onde você escreve um teste que falha primeiro, depois escreve o código mínimo necessário para fazer o teste passar, e por fim refatora o código.
O que são 'fábricas' (factories) em testes?
Fábricas são funções que criam dados de exemplo (como objetos de usuário ou configurações de componentes) de forma consistente e reutilizável para seus testes.
O que são 'mocks'?
Mocks são versões simuladas de partes do seu código (como chamadas de rede ou funções externas) que você usa em testes para controlar o ambiente e focar no que está sendo testado.
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.
Popularidade
- Estrelas no GitHub
- 48 mil
- Posição no ranking
- #4359
- 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