Инструменты API

моки OpenAPIТела запросов и ответов для тестов

Выберите операцию и тело, затем используйте пример или генерацию по схеме.

моки OpenAPI

Спецификация OpenAPI

Созданные экземпляры

Спецификация и тела остаются в этом браузере; запросы к API не отправляются.

Параметры генерации

Один JSON сохраняет форму тела; пакет получает внешний массив. В JSONL одно тело занимает одну строку.

Чтение операций…

Моки OpenAPI нужны, когда интерфейс уже пора тестировать, а серверный метод ещё не готов. Каждый набор данных связан с операцией и статусом в контракте. Это помогает не превратить успешный ответ в ошибку, случайно сохранив недопустимые поля.

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

Зачем нужны моки OpenAPI

Выбирать нужный сценарий ошибки

Моки OpenAPI можно подготовить для объявленного ответа 400 или 404 так же, как для 200. Именованный пример выбирается в рамках конкретного статуса и типа содержимого. Не приходится менять исходную спецификацию или смешивать примеры разных ответов.

Одна операция разветвляется на карточки разных ответов, один пример выделен.

Повторять один и тот же пакет

Отключите приоритет примеров и зафиксируйте seed. Одинаковые документ и настройки дадут ту же последовательность при той же версии движка. Явный пример или константа могут не меняться при другом seed: их фиксированное значение задано самим контрактом.

Два одинаковых начальных значения дают одинаковые упорядоченные пакеты карточек тел.

Три решения перед сохранением

01

Сначала выбрать направление тела

Начальный пример YAML автоматически заполняет списки операций. Для запроса обрабатывается только requestBody, для ответа — выбранные статус и тип содержимого. Параметры пути, строки запроса и заголовков в результат не входят.

02

Определить роль примеров

example и именованные examples на уровне типа содержимого имеют приоритет над примерами схемы и свойств. Неверный пример вызывает ошибку, а не незаметную замену случайными данными. Чтобы исследовать допустимые значения схемы, отключите приоритет.

03

Отличать тело от упаковки пакета

Один результат JSON сохраняет исходную форму тела. Несколько результатов получают внешний массив, а JSONL содержит по одному целому телу в строке. Ctrl/Cmd + Enter запускает генерацию. После изменений экспорт блокируется до нового успешного запуска.

Тестовые данные для конкретного контракта

Операции и объявленные статусы

Найдите операцию по методу и пути, затем выберите код ответа, диапазон или default. Сначала выбирается 200, затем другой 2xx, затем первая запись. Генерация ответов для ошибок использует тот же понятный выбор, что и успешный сценарий.

Проверка готовых примеров

Поддерживаются встроенные значения, именованные примеры и локальные ссылки на Example Object. Применяются подходящие примеры схемы и свойств. Каждое тело проверяется перед экспортом: наличие данных в examples само по себе не гарантирует их корректность.

Поля с учётом направления

Из запросов исключаются свойства readOnly, из ответов — writeOnly. Соответствующие требования required корректируются для этого направления. Если предоставленный пример содержит исключённое поле, он отклоняется без скрытого удаления данных.

Пакеты с фиксированным seed

Можно создать от 1 до 100 независимых полных тел. uniqueItems требует уникальности элементов массива внутри одного тела, но не всех образцов пакета. Количество образцов не меняет ограничения вложенных массивов.

Поддерживаемые контракты и ограничения

OpenAPI 3 и тела JSON
Принимается один документ JSON или YAML в версии OpenAPI 3.0.x либо 3.1.x. Swagger 2 и OpenAPI 3.2 не поддерживаются. Типы содержимого ограничены application/json и application/*+json; XML, формы, двоичные данные, callbacks и выполнение webhooks исключены.
Ограничения не пропускаются
Поддерживаются типы, enum/const, properties, required, additionalProperties, items, uniqueItems и числовые границы или размеры. nullable и исключающие границы версии 3.0 нормализуются. Композиция, условия, pattern, format, multipleOf, кортежи и неизвестные проверочные ключи останавливают генерацию даже при наличии примеров.
Ссылки только внутри документа
Локальные JSON Pointer могут вести к схемам и примерам. Внешние URL, externalValue, циклы, якоря, идентификаторы ресурсов и динамические ссылки не разворачиваются. Дополнительные ограничения рядом со ссылкой на схему 3.1 отклоняются, чтобы неверное объединение не ослабило контракт.
Пустое тело не выдумывается
Ответ без content помечается как не имеющий тела; файл с null не создаётся. JSON-содержимое без schema вызывает ошибку. default не считается примером, имена полей не используются для угадывания людей или адресов, скрипты расширений не выполняются.
Ограниченный бюджет
Вход — до 500 000 символов. Развёрнутая схема генерации — до 100 000 символов, 2 000 синтаксических узлов и глубины 12 с учётом контейнеров. Строки — до 1 000 единиц, коллекции — до 100 элементов, вывод — до 1 000 000 символов, worker — до 5 секунд. Seed — целое от 0 до 4294967295. Потеря точности, повторные ключи и псевдонимы YAML отклоняются.
Файлы вместо работающего сервиса
Мокирование API здесь означает подготовку данных. Инструмент не создаёт URL, HTTP-сервер, авторизацию, постоянный CRUD, программы MSW или Express и не выполняет контрактные тесты с реальным сервером. Исчерпание бюджета не доказывает, что у схемы вообще нет допустимых экземпляров.

Вопросы про моки OpenAPI

Как получить примеры JSON из определения OpenAPI?

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

Как выбрать конкретный пример ответа?

Сначала укажите статус и JSON-тип содержимого, затем именованный пример в этом месте документа. Допустимы встроенные значения и локальные ссылки на Example Object. Пример типа содержимого важнее примера схемы.

Можно ли создать ответы с ошибкой?

Да, если операция объявляет нужный ответ с поддерживаемой JSON-схемой. Выберите 400 или 404 и получите соответствующее тело как фикстуру. Настоящий HTTP-ответ не отправляется, сбой сервера не моделируется.

Почему результат каждый раз одинаковый?

Начальный seed равен 42. Одинаковые документ и параметры воспроизводят выборку. example, const и enum с единственным значением могут оставаться одинаковыми при любом seed. Для сравнения разных seed сначала отключите приоритет примеров.

Проверяет ли созданный мок реальные запросы?

Нет. Проверяется предоставленное или сгенерированное тело относительно поддерживаемой эффективной схемы. Инструмент не обращается к API, не выполняет middleware и не проверяет реальные заголовки, авторизацию или бизнес-правила.

Какое ещё ограничение вам нужно?

Подготовить данные для следующего теста

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