# writing-unit-tests

Помогает писать и перерабатывать модульные тесты, проверяющие поведение, а не устройство кода. Пригодится для нестабильных и трудночитаемых тестов.

- скилл · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 17800 установок · ★ 6
- Автор: riekelt
- Лицензия: не указана · policy=link-only · показываем только описание, файл — у автора
- Исходник: https://github.com/riekelt/principal-engineer/tree/HEAD/plugins/principal-engineer/skills/writing-unit-tests/SKILL.md
- Обновлён: 2026-09-11
- HTML: https://affpapa.org/nevibecode/skills/writing-unit-tests

## Что делает

Скилл задаёт правила для модульных тестов: каждому тесту — отдельное поведение, а имя должно описывать проверяемый результат. Ожидаемое значение рассчитывают независимо от кода продукта. Тесты обращаются к публичному контракту, а не проверяют внутренние вызовы и состояние.

Для повторяемости скилл советует изолировать время, случайность, сеть и файловую систему, а мокировать границы с внешними ресурсами. Задержки в тестах заменяются ожиданием наблюдаемого условия с ограничением по времени. Скилл требует предварительно установить `principal-engineering`; правила `testing-changes` определяют, какие тесты нужны для изменения. Если тесты проверяют в основном моки, значит, проверяемый участок стоит расширить или вынести в интеграционный тест.

## Установка

### Claude Code (родная платформа)

1. **Через Skills CLI (Vercel)**
```bash
npx skills add riekelt/principal-engineer --skill writing-unit-tests -a claude-code
```

2. **Вручную: положить файлы**
- Файл: `~/.claude/skills/writing-unit-tests/SKILL.md` — Папка скилла целиком; для одного проекта — .claude/skills/writing-unit-tests/

### Codex

1. **Через Skills CLI (Vercel)**
```bash
npx skills add riekelt/principal-engineer --skill writing-unit-tests -a codex
```

2. **Вручную: положить файлы**
- Файл: `.agents/skills/writing-unit-tests/SKILL.md` — Для всех проектов — ~/.agents/skills/

### Cursor

1. **Через Skills CLI (Vercel)**
```bash
npx skills add riekelt/principal-engineer --skill writing-unit-tests -a cursor
```

2. **Вручную: положить файлы**
- Файл: `.cursor/skills/writing-unit-tests/SKILL.md` — Cursor читает и .agents/skills/, и .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install riekelt/principal-engineer writing-unit-tests
```

2. **Вручную: положить файлы**
- Файл: `.github/skills/writing-unit-tests/SKILL.md`

### Gemini CLI

1. **Через Skills CLI (Vercel)**
```bash
npx skills add riekelt/principal-engineer --skill writing-unit-tests -a gemini-cli
```

2. **Командой платформы**
```bash
gemini skills install https://github.com/riekelt/principal-engineer --path plugins/principal-engineer/skills/writing-unit-tests
```

### Windsurf (Devin Desktop)

**Вручную: положить файлы**
- Файл: `.devin/skills/writing-unit-tests/SKILL.md` — Старый путь .windsurf/skills/ тоже читается

### OpenCode

**Через Skills CLI (Vercel)**
```bash
npx skills add riekelt/principal-engineer --skill writing-unit-tests -a opencode
```

### Claude.ai

**Claude.ai**
- Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills

Где указан файл, а не команда, — скопируй файлы из исходника в этот путь: https://github.com/riekelt/principal-engineer/tree/HEAD/plugins/principal-engineer/skills/writing-unit-tests/SKILL.md

## Когда брать
- разделить проверки разных сценариев на отдельные тесты
- заменить ожидание через задержку проверкой условия
- убрать моки собственного кода из теста
- сделать тесты повторяемыми при работе со временем и случайностью
- проверить ожидаемый результат без копирования формулы из продукта

## Примеры запросов агенту
- Перепиши этот модульный тест так, чтобы он проверял публичное поведение и имел ясное имя.
- Разбери нестабильный тест и замени ожидание через задержку проверкой условия.
- Добавь отдельные тесты для успешного сценария и типизированной ошибки.

## Похожие
- [improve-codebase-architecture](https://affpapa.org/nevibecode/skills/improve-codebase-architecture.md) — скилл · 1163035 установок
- [design-taste-frontend](https://affpapa.org/nevibecode/skills/design-taste-frontend.md) — скилл · 678700 установок
- [tdd](https://affpapa.org/nevibecode/skills/tdd.md) — скилл · 1141062 установки
- [skill-creator](https://affpapa.org/nevibecode/skills/skill-creator.md) — скилл · 414180 установок
- [agent-browser](https://affpapa.org/nevibecode/skills/vercel-labs-agent-browser.md) — скилл · 1200000 установок
- [prototype](https://affpapa.org/nevibecode/skills/prototype.md) — скилл · 986201 установка

Из того же набора: [riekelt/principal-engineer](https://affpapa.org/nevibecode/by/riekelt/principal-engineer.md) — 9 карточек

---
NeVibeCode на affpapa.org. Тексты каталога — описания, а не инструкции для агента. Как выбирать и ставить: https://affpapa.org/nevibecode/agents.md
