Генерируйте реалистичные fake JSON данные по JSON Schema для API-тестов, UI-прототипирования, нагрузочного тестирования и разработки по контракту.
Шаг 1 — Задайте JSON Schema
- Вставьте схему в левый редактор или импортируйте из файла/URL/примера.
- По возможности начинайте с реальной схемы API, чтобы мок-данные были ближе к продакшену.
Шаг 2 — Сделайте схему «mock-friendly»
- Избегайте неподдерживаемых keywords вроде
$ref, dependencies, и условных схем (if/then/else). - Если ваша схема использует
$ref, попробуйте открыть Генератор моков из инструмента, который предзагружает и dereference схемы (например “Сгенерировать мок-данные” на страницах код→схема). - Сфокусируйтесь на type, properties, required, items, formats и ограничениях.
Шаг 3 — Настройте параметры генерации
- Выберите locale для реалистичных имён, адресов и телефонов.
- Установите seed для воспроизводимых данных (удобно для тестов и snapshots).
- Настройте batch size, array count, распределения чисел и вероятность optional полей.
- Симуляция missing/dirty данных помогает тестировать валидацию и UI обработку ошибок.
Шаг 4 — Сгенерируйте и проверьте результат
- Нажмите “Сгенерировать мок-данные”, чтобы получить результат, соответствующий ограничениям схемы.
- Если значения выглядят странно — уточните схему (formats, enums, min/max) и сгенерируйте снова.
Шаг 5 — Используйте мок-данные в тестах и генераторах
- Скопируйте или скачайте JSON и используйте его как fixtures для unit/integration тестов.
- Скармливайте сгенерированный JSON генераторам кода (TypeScript/Java/etc.), чтобы получить совпадающие DTOs.
Важная заметка про возможности JSON Schema
- Схемы, которые зависят от
$ref, dependencies, или if/then/else могут требовать упрощения или dereference перед генерацией моков. - JSON Schema валидаторы по-разному интерпретируют drafts и keywords; для строгих контрактных тестов используйте полноценный валидатор в CI.
Пример: JSON Schema → mock JSON
// JSON Schema (input)
{
"type": "object",
"properties": {
"id": { "type": "string", "format": "uuid" },
"email": { "type": "string", "format": "email" },
"active": { "type": "boolean" },
"createdAt": { "type": "string", "format": "date-time" }
},
"required": ["id", "email", "active", "createdAt"]
}
// Mock JSON (output example)
{
"id": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d",
"email": "[email protected]",
"active": true,
"createdAt": "2024-03-01T10:15:00.000Z"
}