проектdocs/Agents/rules/testing-coverage-requirements.md
testing-coverage-requirements.md
Обновлён 1 апр. 2026 г., 12:41 · 0 комментариев
title: Maintain 80%+ Test Coverage for New Code impact: HIGH impactDescription: Prevents bugs and enables confident refactoring tags: testing, coverage, quality
Паспорт документа
- Статус документа: living standard
- Актуально на: 28 марта 2026 года
- Владелец: backend/platform-команда
- Пересмотр: при изменении инженерной практики, CI/CD, архитектурных правил или локального workflow
- Область применения: внутренние rule/reference-card документы для инженерной команды
- Связанные документы:
Maintain 80%+ Test Coverage for New Code
Impact: HIGH
Every PR must have near-80%+ test coverage for the code it introduces or modifies. If you add 50 lines of new code, those 50 lines must be covered by tests.
What to Test
| Layer | Test Type | Tool | Coverage Target |
|---|---|---|---|
| NestJS Services (business logic) | Unit | Jest | ~100% |
| Repositories (data access) | Integration | Jest | 80%+ |
| Controllers (HTTP layer) | Integration | Jest + Supertest | 80%+ |
| Frontend components | Unit | Vitest + Testing Library | 70%+ |
| Shared packages | Unit | Vitest | 80%+ |
| User flows | E2E | Playwright | Critical paths |
Example
// item.service.spec.ts
describe('ItemService', () => {
let service: ItemService;
let repo: jest.Mocked<ItemRepository>;
beforeEach(async () => {
const module = await Test.createTestingModule({
providers: [
ItemService,
{ provide: ItemRepository, useValue: createMock<ItemRepository>() },
],
}).compile();
service = module.get(ItemService);
repo = module.get(ItemRepository);
});
describe('findBySlug', () => {
it('returns item when found', async () => {
const mockItem = { id: '1', name: 'Test', slug: 'test' };
repo.findBySlug.mockResolvedValue(mockItem);
const result = await service.findBySlug('test');
expect(result).toEqual(mockItem);
});
it('returns null when not found', async () => {
repo.findBySlug.mockResolvedValue(null);
const result = await service.findBySlug('nonexistent');
expect(result).toBeNull();
});
});
});
Rules
- Services must have unit tests with mocked dependencies
- Use AI assistance to generate comprehensive test suites
- Test edge cases: empty inputs, invalid data, boundary conditions
- Test error paths: what happens when things go wrong