Моки

Моки API прямо в прокси — без отдельного сервера

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

Раздел моков Microkoi: список правил с переключателями и редактор, где задаются метод, узел, путь, код ответа, задержка и тело.

Мок за полминуты

  1. 1

    Найдите запросы

    Выберите в трафике обмен или отметьте флажками нужные ветки в дереве узлов — моки получатся сразу для всех.

  2. 2

    Нажмите «Сделать мок»

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

  3. 3

    Поменяйте и включите

    Задайте нужный код, тело и задержку, сохраните ⌘S и включите переключателем.

Что проверяют моками

Всё, что сложно или долго воспроизвести на настоящем сервере.

  • Редкие ошибки

    500, 503, 429 с Retry-After — посмотрите, как приложение переживёт сбой, которого нет на тестовом стенде.

  • Медленные ответы

    Задержка в миллисекундах покажет, как ведут себя индикаторы загрузки и тайм-ауты.

  • Пустые списки

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

  • Неготовые эндпоинты

    Опишите ответ по договорённости с бэкендом и начинайте работу над клиентом сразу.

  • Истёкшая сессия

    Подмените ответ на обновление токена и проверьте, как приложение выходит из учётной записи.

  • Моки из дерева узлов

    Кнопка у ветки создаёт по моку на каждое сочетание метода и пути внутри, а режим выбора собирает их из разных веток за раз.

  • Видно в трафике

    Подменённый обмен помечается в таблице, а кнопка с именем мока открывает его в редакторе.

Как это устроено

Правила с масками пути

Мок срабатывает по методу, узлу и пути. Метод и узел можно оставить пустыми — тогда подходит любой. В пути звёздочка заменяет один сегмент, две звёздочки — любой хвост.

  • /api/users/* подходит для /api/users/42, но не для /api/users/42/orders
  • /cdn/** — всё, что лежит под /cdn
  • /**/avatar.png — файл с таким именем на любой глубине
  • Параметры после знака вопроса не учитываются, узел сравнивается без учёта регистра и порта

Срабатывает самый точный

Если подходят несколько моков, выигрывает самый конкретный: путь без масок важнее пути с масками, больше точных сегментов важнее меньшего, указанный узел и метод важнее «любого». Ручная сортировка не нужна, и результат не зависит от порядка файлов.

Дерево моков и группы

Моки показываются списком или деревом по узлу и сегментам пути: api.example.com › v1 › orders › GET Список заказов. Кнопка у узла или папки включает все моки внутри, если выключены все, и выключает, если включён хотя бы один.

  • Так группа моков, собранная из трафика, включается одним нажатием, когда сервер недоступен, и так же выключается
  • Корзина у ветки удаляет все моки внутри после подтверждения, где названо их число
  • Папки дерева отражают адрес, а не место хранения: путь меняется в редакторе, и мок сам переезжает в нужную ветку
  • Поиск идёт по имени, методу, узлу и пути, а ветки с совпадениями раскрываются целиком

Моки — это файлы

Каждый мок хранится файлом .mock.json в папке mocks рабочего пространства, а тело ответа — отдельным файлом рядом: настоящим JSON, изображением, PDF или архивом. Всё это попадает в git вместе с запросами и заметками. Переименование мока меняет имена файлов, но не ломает ссылки на него из трафика.

  • Тело можно задать текстом или выбрать любой файл; изображение показывается превью
  • Переключатель «Отдавать как файл для скачивания» добавляет нужный заголовок
  • Правка файла тела в другом редакторе и моки из git подхватываются сразу
  • Испорченный файл пропускается и не ломает список
  • Моки разных пространств не пересекаются

Редактор предупреждает заранее

Если мок не сможет сработать, об этом видно сразу: когда прокси остановлен или когда узел мока не перехватывается фильтром пространства. Для тела в JSON редактор проверяет синтаксис и умеет его отформатировать.

  • Правки вступают в силу после сохранения, переключатель включает мок сразу
  • При переходе к другому моку с несохранёнными правками приложение спросит, сохранить ли их

Вопросы и ответы

Нужно ли поднимать отдельный мок-сервер?

Для моков — нет. Они работают внутри прокси Microkoi: приложение, которое идёт через прокси, получает подменённый ответ по тому же адресу, что и обычно. Если же нужен отдельный API на своём порту, к которому приложение обращается напрямую, — для этого есть мок-серверы.

Уходит ли запрос на настоящий сервер, когда срабатывает мок?

Нет. Прокси отвечает вместо сервера, а обмен записывается в трафик с телом запроса вашего приложения, ответом мока и временем с учётом задержки.

Почему мок не срабатывает?

Проверьте, что прокси запущен и что узел мока перехватывается фильтром пространства: соединение с исключённым узлом идёт сквозным туннелем, и подменить в нём ответ невозможно. Редактор мока предупреждает об обеих ситуациях.

Можно ли поделиться моками с командой?

Да. Моки хранятся файлами в папке mocks рабочего пространства — закоммитьте их, и коллеги получат те же правила.

Попробуйте на своём проекте

Бета-версия бесплатна и не требует регистрации. Скачайте, выберите папку проекта и запустите прокси — через пару минут в списке появятся первые запросы.

Версия 0.9.0 · macOS, Windows и Linux · без регистрации