Как заставить ИИ писать тесты автоматически
Следующий шаг
Открой бота или продолжай маршрут внутри раздела.
Статья -> план в ИИ
Отправь ссылку на эту статью в любой ИИ и получи план внедрения под свой проект.
Прочитай эту статью: https://vibecode.morecil.ru/ru/kak-pisat-kod-s-ii/kak-pisat-testi-cherez-ii/
Работай в контексте моего текущего проекта.
Сделай план внедрения под мой стек:
1) что изменить
2) в каких файлах
3) риски и типичные ошибки
4) как проверить, что всё работает
Если есть варианты, дай "быстрый" и "production-ready". Как использовать
- Скопируй этот промпт и отправь в чат с ИИ.
- Прикрепи проект или открой папку репозитория в ИИ-инструменте.
- Попроси изменения по файлам, риски и короткий чеклист проверки.
Без тестов один маленький промпт через неделю может сломать весь проект. А с тестами — ты спокойно рефакторишь, добавляешь функции и деплоишь в продакшен с уверенностью 99,9 %.
Я использую эту систему в каждом проекте (Telegram-боты, Next.js-приложения, автономные агенты). ИИ не просто «пишет пару assert-ов» — он создаёт полноценную структуру тестов, запускает их, фиксит ошибки и выдаёт отчёт о покрытии.
Почему обычные промпты дают слабые тесты
Обычный запрос:
«Напиши тесты для этой функции»
Результат: 2–3 теста на happy path, без моков, без edge-кейсов, без проверки ошибок.
Правильный подход:
- Сначала просишь архитектуру тестов.
- Потом заставляешь ИИ писать unit + integration + snapshot-тесты.
- Используешь мета-промпты, которые включают все лучшие практики 2026 года.
- Даёшь команду запустить тесты и пофиксить (Cursor и Windsurf это умеют сами).
Как это работает технически (простыми словами)
ИИ видит:
- твой код
- твои требования (через промпт)
- контекст проекта (через Custom Instructions или проект в Cursor)
Он анализирует:
- что делает функция
- какие у неё входные/выходные данные
- какие внешние сервисы она вызывает (Claude API, Supabase, Telegram)
- возможные ошибки
Затем генерирует:
- файл
*.test.tsрядом с исходным - моки для внешних вызовов
- тесты на покрытие 80–100 %
- инструкцию по запуску
7 правил генерации тестов ИИ
Правило 1. TDD-подход: тесты сначала
Промпт-шаблон (самый мощный):
Работай строго по TDD:
1. Сначала напиши ВСЕ тесты для этой функции/класса.
2. Тесты должны покрывать:
- happy path
- edge-кейсы (пустые строки, null, максимальные значения)
- ошибки и исключения
- интеграцию с внешними сервисами (с моками)
Используй Vitest + @testing-library + vi.fn() для моков.
Структура:
- __tests__/filename.test.ts
- mocks/ для внешних API
Сначала покажи только тесты (без реализации функции). Потом я скажу «реализуй».
Правило 2. Полное покрытие + моки внешних сервисов
Промпт:
Создай тесты с 100% покрытием веток.
Обязательно:
- Замокай все внешние вызовы (Claude API, Supabase, Telegram Bot API, n8n и т.д)
- Используй vi.mock() / jest.mock()
- Добавь тесты на retry-логику и таймауты
- Проверь, что ошибки логируются корректно
- Добавь snapshot-тесты для UI-компонентов (если Next.js)
Моки сохрани в отдельную папку __mocks__.
Правило 3. Интеграционные тесты (не только unit)
Теперь создай отдельный файл integration.test.ts
Требования:
- Запускай реальную БД (Supabase test instance или Docker Postgres)
- Тестируй полный флоу: от Telegram-сообщения до ответа
- Используй testcontainers или supabase-test-utils
- Добавь beforeAll / afterAll для очистки данных
Правило 4. Автоматический запуск и исправление
1. Напиши тесты.
2. Запусти команду `npm run test` (или `vitest`).
3. Если падают — автоматически исправь код ИЛИ тесты, пока все не пройдут.
4. В конце покажи отчёт покрытия (coverage).
Правило 5. Генерация тестов для всего проекта сразу
Пройдись по всему проекту и создай недостающие .test.ts файлы для каждой функции и компонента.
Приоритет:
1. handlers/
2. services/
3. repositories/
4. utils/
Сначала покажи список файлов, которые будут созданы.
Правило 6. CI/CD-ready тесты
Сделай тесты готовыми к GitHub Actions:
- Добавь workflow .github/workflows/test.yml
- Тесты должны работать в CI (без реального Telegram токена)
- Добавь coverage threshold 85%
- Проваливай билд, если покрытие ниже
Правило 7. Документация тестов (чтобы ты понимал, что тестируется)
Для каждого теста добавь подробный describe/it с описанием на русском:
- Что тестируем
- Условия
- Ожидаемый результат
- Почему этот тест важен
Универсальный мета-промпт
Копируй и используй всегда:
Задача: создать полную тестовую базу для предоставленного кода.
Применяй по порядку:
1. TDD (тесты сначала)
2. 100% покрытие веток
3. Полные моки внешних сервисов
4. Unit + Integration тесты
5. Snapshot-тесты где нужно
6. Автоматический запуск + исправление ошибок
7. GitHub Actions workflow
8. Отчёт покрытия + рекомендации по улучшению
После завершения:
- Покажи структуру папок __tests__
- Дай команду запуска
- Покажи пример отчёта покрытия
- Добавь комментарии // TODO: для сложных кейсов
Реальный пример: от функции к полным тестам за 3 минуты
Возьмём типичную функцию из Telegram-бота:
// services/subscriptionService.ts
export async function activateSubscription(userId: string, plan: string) { ... }
Что делает ИИ по мета-промпту:
- Создаёт
__tests__/services/subscriptionService.test.ts - Создаёт моки для Supabase и платежей
- Пишет 12 тестов (happy, expired plan, payment failed, rate limit и т.д.)
- Запускает
vitestи фиксит 2 мелкие ошибки - Выдаёт coverage 98%
Чек-лист перед тем, как считать проект готовым
- Для каждой функции есть .test.ts
- Покрытие ≥ 85%
- Все внешние API замоканы
- Есть integration-тесты для критических путей
- GitHub Actions запускает тесты на каждый PR
- Тесты запускаются локально за < 10 секунд
- Есть snapshot-тесты для UI