Мокирование API-запросов в runtime

⚡️ ускоряем проверку специальных сценариев

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

🔑 Ключевая идея

Единый «коннектор»

Все запросы к API проходят через один модуль (например, обёртку для axios). В нём мы проверяем, есть ли для данного запроса mock в localStorage. Если mock найден, реальный запрос всё равно отправляется, но при получении ответа мы подменяем указанные поля.

Хранение mocks в localStorage

Сохраняем JSON: какие запросы «ловить» и какие поля ответа подменять. Подмена происходит уже после реального запроса, в «коннекторе». Чтобы удалить mocks, достаточно очистить localStorage через Dev Tools.

Удобное редактирование прямо в интерфейсе

Обычно можно было бы сделать специальные функции и «вытащить» их в глобальное окружение, чтобы управлять этим через Dev Tools. Но у нас в интерфейсе Sendsay есть «API-консоль» (аналог Postman). Мы добавили в неё поле mock: всё, что туда записывается, сохраняется в localStorage и применяется при следующих запросах.

Преимущества

Экономия времени: не нужно искать «особенного» клиента. Гибкость: легко проверять сценарии для специфичных аккаунтов. Прозрачность: управление мокированием сосредоточено в одном месте, а данные для mock хранятся в localStorage.

Итог

Мы реализовали мокирование запросов прямо в интерфейсе, не отказываясь при этом от реальных ответов сервера, а лишь подменяя нужные поля «на лету». Это ускорило работу QA и упростило тестирование редких сценариев. Теперь, чтобы проверить изменения для определённых категорий пользователей, достаточно создать или отредактировать нужный mock в «API-консоли» — и сразу увидеть, как всё будет выглядеть в приложении.

Мокирование API-запросов в runtime | Сетка — социальная сеть от hh.ru