unit-test-generation
Generate comprehensive unit tests for source files with 100% coverage target. Use when writing tests for React components, utility functions, hooks, or API routes. Supports Jest and Vitest frameworks following Pandora coding standards.
When & Why to Use This Skill
This Claude skill automates the generation of comprehensive unit tests for source files, specifically targeting 100% code coverage. It streamlines the development workflow by creating high-quality test suites for React components, utility functions, hooks, and API routes using Jest and Vitest frameworks, ensuring robust software reliability and adherence to modern coding standards.
Use Cases
- Automating the creation of unit tests for new React components to verify UI rendering and user interactions.
- Generating exhaustive test cases for complex utility functions, covering happy paths, boundary conditions, and error handling.
- Ensuring 100% branch coverage for custom React hooks and API routes to maintain logic integrity.
- Rapidly establishing a testing baseline for legacy code or newly written modules to prevent regressions during refactoring.
| name | unit-test-generation |
|---|---|
| description | Generate comprehensive unit tests for source files with 100% coverage target. Use when writing tests for React components, utility functions, hooks, or API routes. Supports Jest and Vitest frameworks following Pandora coding standards. |
| allowed-tools | Read, Grep, Glob, Bash |
Unit Test Generation Skill
Generate comprehensive unit tests for any source code with a target of 100% coverage.
When to Use
This skill activates when:
- User asks for unit tests for a file or component
- Code needs test coverage
- User mentions "test", "coverage", "jest", "vitest"
- After writing new code that needs testing
Supported File Types
- React components (
.tsx,.jsx) - Utility functions (
.ts,.js) - Custom hooks (
use*.ts,use*.tsx) - API routes (
route.ts,api/*.ts) - Classes and modules
Test Generation Process
Analyze the source file:
- Identify exported functions, components, hooks
- Map conditional branches and logic paths
- Note dependencies and imports
Generate test cases for:
- Happy path scenarios
- Edge cases (empty, null, boundary)
- Error handling paths
- All branches and conditions
Write test code following patterns:
- Use React Testing Library for components
- Mock external dependencies
- Use descriptive test names
- Group with describe blocks
Test File Template
import { render, screen, fireEvent } from '@testing-library/react';
import { ComponentName } from './ComponentName';
describe('ComponentName', () => {
describe('rendering', () => {
it('should render correctly with default props', () => {
render(<ComponentName />);
expect(screen.getByRole('...')).toBeInTheDocument();
});
});
describe('interactions', () => {
it('should handle click events', () => {
const onClick = jest.fn();
render(<ComponentName onClick={onClick} />);
fireEvent.click(screen.getByRole('button'));
expect(onClick).toHaveBeenCalled();
});
});
describe('edge cases', () => {
it('should handle empty props gracefully', () => {
render(<ComponentName items={[]} />);
expect(screen.getByText('No items')).toBeInTheDocument();
});
});
});
Best Practices
- Test behavior, not implementation
- Use meaningful test descriptions
- Keep tests independent and isolated
- Mock external services and APIs
- Test accessibility where applicable
- Aim for 100% branch coverage
- Follow AAA pattern (Arrange, Act, Assert)