Skip to main content Inicio Creadores beko2210 firstbrain testing-patterns
testing-patterns 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.
Ir a la instalación Skills Marketplace Descubre y explora habilidades de IA creadas por la comunidad.
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Copiar promptMostrar detalles del prompt Un comando directo omite el prompt de revisión. Revisa el origen antes de ejecutarlo.
npx skills add https://github.com/BEKO2210/Firstbrain --skill testing-patternsEl comando permanece en una sola línea. Desplázate horizontalmente para revisarlo antes de copiarlo.
¿Prefieres una copia local? Descarga los archivos que SkillsMP tiene disponibles ahora.
Descargar Zip Descargando... Ocupaciones relacionadas SOC
Basado en la clasificación ocupacional SOC
name testing-patterns description 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. type skill created 2026-02-27T00:00:00.000Z domain software-development category testing risk unknown source community tags ["skill","software-development","testing"]
Testing Patterns and Utilities
Testing Philosophy
Test-Driven Development (TDD):
Write failing test FIRST
Implement minimal code to pass
Refactor after green
Never write production code without a failing test
Behavior-Driven Testing:
Test behavior, not implementation
Focus on public APIs and business requirements
Avoid testing implementation details
Use descriptive test names that describe behavior
Factory Pattern:
Create getMockX(overrides?: Partial<X>) functions
Provide sensible defaults
Allow overriding specific properties
Keep tests DRY and maintainable
Test Utilities
Custom Render Function
Create a custom render that wraps components with required providers:
import { render } from '@testing-library/react-native' ;
import { ThemeProvider } from './theme' ;
export const renderWithTheme = (ui : React .ReactElement ) => {
return render (
<ThemeProvider > {ui}</ThemeProvider >
);
};
Usage:
import { renderWithTheme } from 'utils/testUtils' ;
import { screen } from '@testing-library/react-native' ;
it ('should render component' , {
( );
(screen. ( )). ();
});
() =>
renderWithTheme
<MyComponent />
expect
getByText
'Hello'
toBeTruthy
Factory Pattern
Component Props Factory import { ComponentProps } from 'react' ;
const getMockMyComponentProps = (
overrides ?: Partial <ComponentProps <typeof MyComponent >>
) => {
return {
title : 'Default Title' ,
count : 0 ,
onPress : jest.fn (),
isLoading : false ,
...overrides,
};
};
it ('should render with custom title' , () => {
const props = getMockMyComponentProps ({ title : 'Custom Title' });
renderWithTheme (<MyComponent {...props } /> );
expect (screen.getByText ('Custom Title' )).toBeTruthy ();
});
Data Factory 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,
};
};
it ('should display admin badge for admin users' , () => {
const user = getMockUser ({ role : 'admin' });
renderWithTheme (<UserCard user ={user} /> );
expect (screen.getByText ('Admin' )).toBeTruthy ();
});
Mocking Patterns
Mocking Modules
jest.mock ('utils/analytics' );
jest.mock ('utils/analytics' , () => ({
Analytics : {
logEvent : jest.fn (),
},
}));
const mockLogEvent = jest.requireMock ('utils/analytics' ).Analytics .logEvent ;
Mocking GraphQL Hooks jest.mock ('./GetItems.generated' , () => ({
useGetItemsQuery : jest.fn (),
}));
const mockUseGetItemsQuery = jest.requireMock (
'./GetItems.generated'
).useGetItemsQuery as jest.Mock ;
mockUseGetItemsQuery.mockReturnValue ({
data : { items : [] },
loading : false ,
error : undefined ,
});
Test Structure 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' , () => {});
});
});
Query Patterns
expect (screen.getByText ('Hello' )).toBeTruthy ();
expect (screen.queryByText ('Goodbye' )).toBeNull ();
await waitFor (() => {
expect (screen.findByText ('Loaded' )).toBeTruthy ();
});
User Interaction Patterns 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' );
fireEvent.press (screen.getByTestId ('login-button' ));
await waitFor (() => {
expect (onSubmit).toHaveBeenCalled ();
});
});
Anti-Patterns to Avoid
Testing Mock Behavior Instead of Real Behavior
expect (mockFetchData).toHaveBeenCalled ();
expect (screen.getByText ('John Doe' )).toBeTruthy ();
Not Using Factories
it ('test 1' , () => {
const user = { id : '1' , name : 'John' , email : 'john@test.com' , role : 'user' };
});
it ('test 2' , () => {
const user = { id : '2' , name : 'Jane' , email : 'jane@test.com' };
});
const user = getMockUser ({ name : 'Custom Name' });
Best Practices
Always use factory functions for props and data
Test behavior, not implementation
Use descriptive test names
Organize with describe blocks
Clear mocks between tests
Keep tests focused - one behavior per test
Running Tests
npm test
npm run test :coverage
npm test ComponentName.test.tsx
Integration with Other Skills
react-ui-patterns : Test all UI states (loading, error, empty, success)
systematic-debugging : Write test that reproduces bug before fixing
When to Use This skill is applicable to execute the workflow or actions described in the overview.
Connections
Domain: [[Software Entwicklung]]
Kategorie: [[Testing & Qualitaet]]
Navigation: [[Skills Uebersicht]], [[Home]]