vibecode.wiki
RU EN
~/wiki / kak-pisat-kod-s-ii / kak-pisat-testi-cherez-ii

Как заставить ИИ писать тесты автоматически

◷ 5 мин чтения 03.03.2026

Следующий шаг

Открой бота или продолжай маршрут внутри раздела.

$ cd раздел/ $ open @mmorecil_bot

Статья -> план в ИИ

Отправь ссылку на эту статью в любой ИИ и получи план внедрения под свой проект.

Прочитай эту статью: https://vibecode.morecil.ru/ru/kak-pisat-kod-s-ii/kak-pisat-testi-cherez-ii/ Работай в контексте моего текущего проекта. Сделай план внедрения под мой стек: 1) что изменить 2) в каких файлах 3) риски и типичные ошибки 4) как проверить, что всё работает Если есть варианты, дай "быстрый" и "production-ready".
Как использовать
  1. Скопируй этот промпт и отправь в чат с ИИ.
  2. Прикрепи проект или открой папку репозитория в ИИ-инструменте.
  3. Попроси изменения по файлам, риски и короткий чеклист проверки.

Без тестов один маленький промпт через неделю может сломать весь проект. А с тестами — ты спокойно рефакторишь, добавляешь функции и деплоишь в продакшен с уверенностью 99,9 %.

Я использую эту систему в каждом проекте (Telegram-боты, Next.js-приложения, автономные агенты). ИИ не просто «пишет пару assert-ов» — он создаёт полноценную структуру тестов, запускает их, фиксит ошибки и выдаёт отчёт о покрытии.

Почему обычные промпты дают слабые тесты

Обычный запрос:
«Напиши тесты для этой функции»

Результат: 2–3 теста на happy path, без моков, без edge-кейсов, без проверки ошибок.

Правильный подход:

  1. Сначала просишь архитектуру тестов.
  2. Потом заставляешь ИИ писать unit + integration + snapshot-тесты.
  3. Используешь мета-промпты, которые включают все лучшие практики 2026 года.
  4. Даёшь команду запустить тесты и пофиксить (Cursor и Windsurf это умеют сами).

Как это работает технически (простыми словами)

ИИ видит:

  • твой код
  • твои требования (через промпт)
  • контекст проекта (через Custom Instructions или проект в Cursor)

Он анализирует:

  • что делает функция
  • какие у неё входные/выходные данные
  • какие внешние сервисы она вызывает (Claude API, Supabase, Telegram)
  • возможные ошибки

Затем генерирует:

  • файл *.test.ts рядом с исходным
  • моки для внешних вызовов
  • тесты на покрытие 80–100 %
  • инструкцию по запуску

7 правил генерации тестов ИИ

Правило 1. TDD-подход: тесты сначала

Промпт-шаблон (самый мощный):

prompt.txt
Работай строго по TDD:
1. Сначала напиши ВСЕ тесты для этой функции/класса.
2. Тесты должны покрывать:
   - happy path
   - edge-кейсы (пустые строки, null, максимальные значения)
   - ошибки и исключения
   - интеграцию с внешними сервисами (с моками)

Используй Vitest + @testing-library + vi.fn() для моков.

Структура:
- __tests__/filename.test.ts
- mocks/ для внешних API

Сначала покажи только тесты (без реализации функции). Потом я скажу «реализуй».

Правило 2. Полное покрытие + моки внешних сервисов

Промпт:

prompt.txt
Создай тесты с 100% покрытием веток.

Обязательно:
- Замокай все внешние вызовы (Claude API, Supabase, Telegram Bot API, n8n и т.д)
- Используй vi.mock() / jest.mock()
- Добавь тесты на retry-логику и таймауты
- Проверь, что ошибки логируются корректно
- Добавь snapshot-тесты для UI-компонентов (если Next.js)

Моки сохрани в отдельную папку __mocks__.

Правило 3. Интеграционные тесты (не только unit)

prompt.txt
Теперь создай отдельный файл integration.test.ts

Требования:
- Запускай реальную БД (Supabase test instance или Docker Postgres)
- Тестируй полный флоу: от Telegram-сообщения до ответа
- Используй testcontainers или supabase-test-utils
- Добавь beforeAll / afterAll для очистки данных

Правило 4. Автоматический запуск и исправление

prompt.txt
1. Напиши тесты.
2. Запусти команду `npm run test` (или `vitest`).
3. Если падают — автоматически исправь код ИЛИ тесты, пока все не пройдут.
4. В конце покажи отчёт покрытия (coverage).

Правило 5. Генерация тестов для всего проекта сразу

prompt.txt
Пройдись по всему проекту и создай недостающие .test.ts файлы для каждой функции и компонента.

Приоритет:
1. handlers/
2. services/
3. repositories/
4. utils/

Сначала покажи список файлов, которые будут созданы.

Правило 6. CI/CD-ready тесты

prompt.txt
Сделай тесты готовыми к GitHub Actions:

- Добавь workflow .github/workflows/test.yml
- Тесты должны работать в CI (без реального Telegram токена)
- Добавь coverage threshold 85%
- Проваливай билд, если покрытие ниже

Правило 7. Документация тестов (чтобы ты понимал, что тестируется)

prompt.txt
Для каждого теста добавь подробный describe/it с описанием на русском:
- Что тестируем
- Условия
- Ожидаемый результат
- Почему этот тест важен

Универсальный мета-промпт

Копируй и используй всегда:

prompt.txt

Задача: создать полную тестовую базу для предоставленного кода.

Применяй по порядку:
1. TDD (тесты сначала)
2. 100% покрытие веток
3. Полные моки внешних сервисов
4. Unit + Integration тесты
5. Snapshot-тесты где нужно
6. Автоматический запуск + исправление ошибок
7. GitHub Actions workflow
8. Отчёт покрытия + рекомендации по улучшению

После завершения:
- Покажи структуру папок __tests__
- Дай команду запуска
- Покажи пример отчёта покрытия
- Добавь комментарии // TODO: для сложных кейсов

Реальный пример: от функции к полным тестам за 3 минуты

Возьмём типичную функцию из Telegram-бота:

ts
// services/subscriptionService.ts
export async function activateSubscription(userId: string, plan: string) { ... }

Что делает ИИ по мета-промпту:

  1. Создаёт __tests__/services/subscriptionService.test.ts
  2. Создаёт моки для Supabase и платежей
  3. Пишет 12 тестов (happy, expired plan, payment failed, rate limit и т.д.)
  4. Запускает vitest и фиксит 2 мелкие ошибки
  5. Выдаёт coverage 98%

Чек-лист перед тем, как считать проект готовым

  • Для каждой функции есть .test.ts
  • Покрытие ≥ 85%
  • Все внешние API замоканы
  • Есть integration-тесты для критических путей
  • GitHub Actions запускает тесты на каждый PR
  • Тесты запускаются локально за < 10 секунд
  • Есть snapshot-тесты для UI