Документация Справочник Faker-функций

Faker Reference для Mockarty

Содержание

  1. Обзор
  2. Адреса
  3. Дата и время
  4. Интернет
  5. Текст
  6. Платежи
  7. Персональные данные
  8. Телефоны
  9. Идентификаторы и хеши
  10. Бизнес
  11. Русские данные
  12. Общие типы
  13. Математические функции
  14. Синтаксис Go Template
  15. Практические примеры


Обзор

Faker в Mockarty генерирует случайные тестовые данные для динамических ответов моков. Каждое поле, перечисленное ниже, доступно как $.fake.FieldName в JPath-выражениях (без аргументов).

{
  "response": {
    "payload": {
      "id": "$.fake.UUID",
      "name": "$.fake.FirstName",
      "email": "$.fake.Email",
      "createdAt": "$.fake.RFC3339"
    }
  }
}

Важно: JPath-режим НЕ поддерживает параметризованные вызовы. $.fake.UUID – правильно; $.fake.IntBetween(1, 100) – НЕ будет работать. Для арифметики используйте математические функции ($.increment, $.sum, $.multiply, $.subtract).

Совет: повторное использование сгенерированных значений. Каждый вызов $.fake.* генерирует новое случайное значение при каждом вычислении. Если вам нужно одно и то же сгенерированное значение в нескольких местах (например, один и тот же UUID в ответе и в извлечении), сначала сохраните его в Mock Store (mStore), а затем ссылайтесь на него через $.mS.key:

{
  "extract": {
    "mStore": {
      "generatedId": "$.fake.UUID"
    }
  },
  "response": {
    "payload": {
      "id": "$.mS.generatedId",
      "link": "https://example.com/items/$.mS.generatedId"
    }
  }
}

Таким образом generatedId создаётся один раз и используется повторно единообразно.



Адреса

Функция Описание Пример
$.fake.Latitude Случайная широта 81.12195
$.fake.Longitude Случайная долгота -84.38158
$.fake.City Название города "New York"
$.fake.Country Название страны "United States"
$.fake.CountryCode ISO-код страны "US"
$.fake.State Название штата (США) "California"
$.fake.StreetAddress Номер дома и улица "4821 Maple Avenue"
$.fake.ZipCode 5-значный почтовый индекс "07432"
$.fake.Address Полный адрес (улица, город, штат, индекс) "4821 Maple Avenue, New York, California 07432"
{
  "response": {
    "payload": {
      "location": {
        "address": "$.fake.Address",
        "city": "$.fake.City",
        "state": "$.fake.State",
        "zip": "$.fake.ZipCode",
        "country": "$.fake.Country",
        "countryCode": "$.fake.CountryCode",
        "coordinates": {
          "lat": "$.fake.Latitude",
          "lng": "$.fake.Longitude"
        }
      }
    }
  }
}


Дата и время

Функция Описание Пример
$.fake.UnixTime Unix-время (секунды) 1197930901
$.fake.Date Случайная дата (YYYY-MM-DD) "1982-02-27"
$.fake.TimeString Случайное время (HH:MM:SS) "03:10:25"
$.fake.MonthName Название месяца "February"
$.fake.YearString Год в виде строки "1994"
$.fake.DayOfWeek День недели "Sunday"
$.fake.DayOfMonth День месяца "20"
$.fake.Timestamp Полная метка времени (YYYY-MM-DD HH:MM:SS) "1973-06-21 14:50:46"
$.fake.RFC3339 Текущее время в формате RFC 3339 "2024-01-15T14:30:45Z"
$.fake.Century Век (римские цифры) "IV"
$.fake.Timezone Идентификатор часового пояса "Asia/Jakarta"
$.fake.TimePeriod AM или PM "PM"
{
  "response": {
    "payload": {
      "createdAt": "$.fake.RFC3339",
      "date": "$.fake.Date",
      "time": "$.fake.TimeString",
      "unixTs": "$.fake.UnixTime",
      "month": "$.fake.MonthName",
      "year": "$.fake.YearString",
      "dayOfWeek": "$.fake.DayOfWeek",
      "dayOfMonth": "$.fake.DayOfMonth",
      "fullTimestamp": "$.fake.Timestamp",
      "timezone": "$.fake.Timezone",
      "period": "$.fake.TimePeriod"
    }
  }
}


Интернет

Функция Описание Пример
$.fake.Email Адрес электронной почты "mJBJtbv@OSAaT.com"
$.fake.MacAddress MAC-адрес "cd:65:e1:d4:76:c6"
$.fake.DomainName Доменное имя "FWZcaRE.org"
$.fake.URL URL-адрес "https://www.oEuqqAY.org/QgqfOhd"
$.fake.Username Имя пользователя "lVxELHS"
$.fake.IPv4 IPv4-адрес "99.23.42.63"
$.fake.IPv6 IPv6-адрес "975c:fb2c:2133:fbdd:beda:282e:1e0a:ec7d"
$.fake.Password Случайный пароль "dfJdyHGuVkHBgnHLQQgpINApynzexnRpgIKBpiIjpTP"
$.fake.UserAgent Строка User-Agent браузера "Mozilla/5.0 (Windows NT 10.0; Win64; x64) ..."
$.fake.Color Название цвета "Teal"
$.fake.HexColor Цвет в HEX-формате "#3a2f1c"
{
  "response": {
    "payload": {
      "contact": {
        "email": "$.fake.Email",
        "website": "$.fake.URL"
      },
      "technical": {
        "ip": "$.fake.IPv4",
        "ipv6": "$.fake.IPv6",
        "mac": "$.fake.MacAddress",
        "userAgent": "$.fake.UserAgent",
        "domain": "$.fake.DomainName"
      },
      "style": {
        "color": "$.fake.Color",
        "hex": "$.fake.HexColor"
      }
    }
  }
}


Текст

Функция Описание Пример
$.fake.Word Случайное слово "nesciunt"
$.fake.Sentence Случайное предложение "Consequatur perferendis voluptatem accusantium."
$.fake.Paragraph Случайный абзац (несколько предложений) "Aut consequatur sit perferendis ..."
$.fake.Letter Одна заглавная буква (A-Z) "M"
{
  "response": {
    "payload": {
      "title": "$.fake.Sentence",
      "description": "$.fake.Paragraph",
      "keyword": "$.fake.Word",
      "initial": "$.fake.Letter"
    }
  }
}


Платежи

Функция Описание Пример
$.fake.CCType Тип кредитной карты "American Express"
$.fake.CCNumber Номер кредитной карты "373641309057568"
$.fake.Currency Код валюты "USD"
$.fake.AmountWithCurrency Сумма с кодом валюты "USD 49257.100"
$.fake.Price Цена с двумя знаками после запятой "123.45"
{
  "response": {
    "payload": {
      "payment": {
        "cardType": "$.fake.CCType",
        "cardNumber": "$.fake.CCNumber",
        "currency": "$.fake.Currency",
        "total": "$.fake.AmountWithCurrency",
        "price": "$.fake.Price"
      }
    }
  }
}


Персональные данные

Функция Описание Пример
$.fake.TitleMale Мужское обращение "Mr."
$.fake.TitleFemale Женское обращение "Mrs."
$.fake.FirstName Имя (любой пол) "Whitney"
$.fake.FirstNameMale Мужское имя "Kenny"
$.fake.FirstNameFemale Женское имя "Jana"
$.fake.LastName Фамилия "Rohan"
$.fake.Name Полное имя с обращением "Mrs. Casandra Kiehn"
$.fake.Gender Пол "Male" или "Female"
{
  "response": {
    "payload": {
      "user": {
        "title": "$.fake.TitleMale",
        "firstName": "$.fake.FirstName",
        "lastName": "$.fake.LastName",
        "fullName": "$.fake.Name",
        "gender": "$.fake.Gender"
      }
    }
  }
}


Телефоны

Функция Описание Пример
$.fake.PhoneNumber Номер телефона "201-886-0269"
$.fake.Phone Алиас для PhoneNumber "201-886-0269"
$.fake.TollFreePhoneNumber Бесплатный номер "(777) 831-964572"
$.fake.E164PhoneNumber Телефон в формате E.164 "+724891571063"
{
  "response": {
    "payload": {
      "contact": {
        "phone": "$.fake.Phone",
        "tollFree": "$.fake.TollFreePhoneNumber",
        "international": "$.fake.E164PhoneNumber"
      }
    }
  }
}



Идентификаторы и хеши

Функция Описание Пример
$.fake.UUID UUID v4 с дефисами "8f8e4463-9560-4a38-9b0c-ef24481e4e27"
$.fake.UUIDDigit UUID без дефисов "90ea6479fd0e4940af741f0a87596b73"
$.fake.JWT Реалистичный JWT (header.payload.signature) "eyJhbGciOiJIUzI1NiIs..."
$.fake.MD5 MD5-хеш (32 hex-символа) "5d41402abc4b2a76b9719d911017c592"
$.fake.SHA256 SHA-256-хеш (64 hex-символа) "e3b0c44298fc1c149afbf4c8996fb924..."
{
  "response": {
    "payload": {
      "id": "$.fake.UUID",
      "shortId": "$.fake.UUIDDigit",
      "token": "$.fake.JWT",
      "checksum": "$.fake.MD5",
      "hash": "$.fake.SHA256"
    }
  }
}



Бизнес

Функция Описание Пример
$.fake.Company Название компании "Stark Industries"
$.fake.JobTitle Должность "Software Engineer"
{
  "response": {
    "payload": {
      "employee": {
        "company": "$.fake.Company",
        "jobTitle": "$.fake.JobTitle"
      }
    }
  }
}



Русские данные

Функция Описание Пример
$.fake.RussianFirstNameMale Русское мужское имя "Александр"
$.fake.RussianLastNameMale Русская мужская фамилия "Иванов"
$.fake.RussianFirstNameFemale Русское женское имя "Анна"
$.fake.RussianLastNameFemale Русская женская фамилия "Иванова"
{
  "response": {
    "payload": {
      "russianUser": {
        "firstName": "$.fake.RussianFirstNameMale",
        "lastName": "$.fake.RussianLastNameMale"
      },
      "russianUserFemale": {
        "firstName": "$.fake.RussianFirstNameFemale",
        "lastName": "$.fake.RussianLastNameFemale"
      }
    }
  }
}

Общие типы

Функция Описание Пример
$.fake.Bool Случайное булево значение true или false
$.fake.String Случайное слово (аналог Word) "lorem"
$.fake.Number Случайное целое число (0 до 999999) 482731
$.fake.Int Случайное целое число (0 до 999999) 348217
$.fake.Float Случайное дробное число (0 до 1000) 472.839
$.fake.Digit Одна цифра (0-9) в виде строки "7"
$.fake.PositiveInt Большое положительное целое число 4823947291847
$.fake.NegativeInt Отрицательное целое число -2839174
$.fake.Base64 Случайные байты в Base64 "dGVzdCBiYXNlNjQ="
$.fake.Duration Строка длительности в секундах "1842s"
{
  "response": {
    "payload": {
      "isActive": "$.fake.Bool",
      "label": "$.fake.String",
      "count": "$.fake.Number",
      "score": "$.fake.Int",
      "rate": "$.fake.Float",
      "code": "$.fake.Digit",
      "positiveId": "$.fake.PositiveInt",
      "offset": "$.fake.NegativeInt",
      "encoded": "$.fake.Base64",
      "ttl": "$.fake.Duration"
    }
  }
}


Математические функции

Эти функции НЕ являются частью $.fake.*, а представляют собой самостоятельные JPath-выражения. Принимают JPath-выражения или числовые литералы в качестве аргументов.

Функция Описание Пример
$.increment(expr) Увеличить числовое значение на 1 $.increment($.gS.counter)
$.sum(a, b) Сумма двух значений $.sum($.gS.price, 10)
$.multiply(a, b) Произведение двух значений $.multiply($.gS.quantity, $.gS.unitPrice)
$.subtract(a, b) Разность двух значений $.subtract($.gS.total, $.gS.discount)

Аргументы могут быть:

  • Числовыми литералами: 5, 3.14
  • JPath-выражениями: $.gS.counter, $.cS.amount
  • Выражениями со значением по умолчанию: $.gS.counter || 0 (если ключа нет в хранилище, используется 0)
{
  "response": {
    "payload": {
      "nextId": "$.increment($.gS.lastId || 0)",
      "total": "$.sum($.gS.subtotal, $.gS.tax)",
      "extendedPrice": "$.multiply($.gS.quantity, $.gS.unitPrice)",
      "balance": "$.subtract($.gS.credit, $.gS.debit)"
    }
  }
}

Синтаксис Go Template

При использовании Go-шаблонов (.tmpl-файлы или goTemplate: true) Faker доступен через функцию fake, которая возвращает объект Faker. Вызывайте методы без аргументов:

{
  "id": "{{(fake).UUID}}",
  "name": "{{(fake).FirstName}}",
  "email": "{{(fake).Email}}",
  "createdAt": "{{(fake).RFC3339}}"
}

Вызов (fake) возвращает структуру Faker, затем .MethodName вызывает соответствующий метод. Например:

{
  "user": {
    "id": "{{(fake).UUID}}",
    "firstName": "{{(fake).FirstName}}",
    "lastName": "{{(fake).LastName}}",
    "phone": "{{(fake).PhoneNumber}}",
    "isAdmin": {{(fake).Bool}},
    "createdAt": "{{(fake).RFC3339}}"
  }
}

Важно: не все JPath-поля имеют методы Go Template. Только методы, перечисленные в таблице ниже, доступны в режиме Go Template. JPath-only поля (такие как City, Company, MD5, Phone, Price и др.) заполняются в структуре JpathTemplateFakeData и НЕ могут быть вызваны через {{(fake).FieldName}}.

Доступные методы Go Template

Метод Тип возврата Категория
{{(fake).Latitude}} float64 Адреса
{{(fake).Longitude}} float64 Адреса
{{(fake).GetRealAddress}} объект Адреса (только Go Template)
{{(fake).UnixTime}} int64 Дата и время
{{(fake).Date}} string Дата и время
{{(fake).TimeString}} string Дата и время
{{(fake).MonthName}} string Дата и время
{{(fake).YearString}} string Дата и время
{{(fake).DayOfWeek}} string Дата и время
{{(fake).DayOfMonth}} string Дата и время
{{(fake).Timestamp}} string Дата и время
{{(fake).RFC3339}} string Дата и время
{{(fake).Century}} string Дата и время
{{(fake).Timezone}} string Дата и время
{{(fake).TimePeriod}} string Дата и время
{{(fake).Email}} string Интернет
{{(fake).MacAddress}} string Интернет
{{(fake).DomainName}} string Интернет
{{(fake).URL}} string Интернет
{{(fake).Username}} string Интернет
{{(fake).IPv4}} string Интернет
{{(fake).IPv6}} string Интернет
{{(fake).Password}} string Интернет
{{(fake).Word}} string Текст
{{(fake).Sentence}} string Текст
{{(fake).Paragraph}} string Текст
{{(fake).CCType}} string Платежи
{{(fake).CCNumber}} string Платежи
{{(fake).Currency}} string Платежи
{{(fake).AmountWithCurrency}} string Платежи
{{(fake).TitleMale}} string Персональные данные
{{(fake).TitleFemale}} string Персональные данные
{{(fake).FirstName}} string Персональные данные
{{(fake).FirstNameMale}} string Персональные данные
{{(fake).FirstNameFemale}} string Персональные данные
{{(fake).LastName}} string Персональные данные
{{(fake).Name}} string Персональные данные
{{(fake).PhoneNumber}} string Телефоны
{{(fake).TollFreePhoneNumber}} string Телефоны
{{(fake).E164PhoneNumber}} string Телефоны
{{(fake).UUID}} string Идентификаторы
{{(fake).UUIDDigit}} string Идентификаторы
{{(fake).JWT}} string Идентификаторы
{{(fake).Bool}} bool Общие типы
{{(fake).String}} string Общие типы
{{(fake).PositiveInt}} int64 Общие типы
{{(fake).NegativeInt}} int64 Общие типы
{{(fake).RussianFirstNameMale}} string Русские данные
{{(fake).RussianLastNameMale}} string Русские данные
{{(fake).RussianFirstNameFemale}} string Русские данные
{{(fake).RussianLastNameFemale}} string Русские данные

JPath-only поля (НЕ доступны в Go Template)

Следующие поля доступны только через JPath $.fake.* и НЕ имеют соответствующих методов Go Template:

City, Country, CountryCode, State, StreetAddress, ZipCode, Address, UserAgent, Color, HexColor, Letter, Digit, Gender, Phone, Number, Int, Float, Base64, Duration, Price, Company, JobTitle, MD5, SHA256

Все перечисленные поля полностью заполняются и возвращают реалистичные значения в режиме JPath.

Только Go Template: GetRealAddress() возвращает объект реального адреса с полями Street, City, State и Zip. Этот метод доступен только в режиме Go Template через {{(fake).GetRealAddress}} – он НЕ доступен через JPath $.fake.GetRealAddress.

{
  "address": {
    "street": "{{(fake).GetRealAddress.Street}}",
    "city": "{{(fake).GetRealAddress.City}}",
    "state": "{{(fake).GetRealAddress.State}}",
    "zip": "{{(fake).GetRealAddress.Zip}}"
  }
}

Практические примеры

Полный профиль пользователя

{
  "id": "user-profile",
  "http": {
    "route": "/api/users/profile"
  },
  "response": {
    "payload": {
      "user": {
        "id": "$.fake.UUID",
        "username": "$.fake.Username",
        "firstName": "$.fake.FirstName",
        "lastName": "$.fake.LastName",
        "fullName": "$.fake.Name",
        "gender": "$.fake.Gender",
        "email": "$.fake.Email",
        "phone": "$.fake.Phone",
        "address": {
          "street": "$.fake.StreetAddress",
          "city": "$.fake.City",
          "state": "$.fake.State",
          "zip": "$.fake.ZipCode",
          "country": "$.fake.Country",
          "lat": "$.fake.Latitude",
          "lng": "$.fake.Longitude"
        },
        "work": {
          "company": "$.fake.Company",
          "jobTitle": "$.fake.JobTitle"
        },
        "notifications": "$.fake.Bool",
        "createdAt": "$.fake.RFC3339",
        "ipAddress": "$.fake.IPv4",
        "userAgent": "$.fake.UserAgent"
      }
    }
  }
}

Финансовая транзакция

{
  "id": "financial-transaction",
  "http": {
    "route": "/api/transactions"
  },
  "response": {
    "payload": {
      "transaction": {
        "id": "$.fake.UUID",
        "type": "payment",
        "status": "completed",
        "amount": "$.fake.Price",
        "currency": "$.fake.Currency",
        "total": "$.fake.AmountWithCurrency",
        "card": {
          "type": "$.fake.CCType",
          "number": "$.fake.CCNumber"
        },
        "merchant": {
          "name": "$.fake.Company",
          "address": "$.fake.Address"
        },
        "customer": {
          "name": "$.fake.Name",
          "email": "$.fake.Email",
          "phone": "$.fake.Phone"
        },
        "hash": "$.fake.SHA256",
        "authCode": "$.fake.MD5",
        "processedAt": "$.fake.RFC3339"
      }
    }
  }
}

Полный список функций (краткая справка)

Все 74 доступных поля $.fake.*:

# Поле Категория
1 Latitude Адреса
2 Longitude Адреса
3 City Адреса
4 Country Адреса
5 CountryCode Адреса
6 State Адреса
7 StreetAddress Адреса
8 ZipCode Адреса
9 Address Адреса
10 UnixTime Дата и время
11 Date Дата и время
12 TimeString Дата и время
13 MonthName Дата и время
14 YearString Дата и время
15 DayOfWeek Дата и время
16 DayOfMonth Дата и время
17 Timestamp Дата и время
18 RFC3339 Дата и время
19 Century Дата и время
20 Timezone Дата и время
21 TimePeriod Дата и время
22 Email Интернет
23 MacAddress Интернет
24 DomainName Интернет
25 URL Интернет
26 Username Интернет
27 IPv4 Интернет
28 IPv6 Интернет
29 Password Интернет
30 UserAgent Интернет
31 Color Интернет
32 HexColor Интернет
33 Word Текст
34 Sentence Текст
35 Paragraph Текст
36 Letter Текст
37 CCType Платежи
38 CCNumber Платежи
39 Currency Платежи
40 AmountWithCurrency Платежи
41 Price Платежи
42 TitleMale Персональные данные
43 TitleFemale Персональные данные
44 FirstName Персональные данные
45 FirstNameMale Персональные данные
46 FirstNameFemale Персональные данные
47 LastName Персональные данные
48 Name Персональные данные
49 Gender Персональные данные
50 PhoneNumber Телефоны
51 Phone Телефоны
52 TollFreePhoneNumber Телефоны
53 E164PhoneNumber Телефоны
54 UUID Идентификаторы и хеши
55 UUIDDigit Идентификаторы и хеши
56 JWT Идентификаторы и хеши
57 MD5 Идентификаторы и хеши
58 SHA256 Идентификаторы и хеши
59 Company Бизнес
60 JobTitle Бизнес
61 RussianFirstNameMale Русские данные
62 RussianLastNameMale Русские данные
63 RussianFirstNameFemale Русские данные
64 RussianLastNameFemale Русские данные
65 Bool Общие типы
66 String Общие типы
67 Number Общие типы
68 Int Общие типы
69 Float Общие типы
70 Digit Общие типы
71 PositiveInt Общие типы
72 NegativeInt Общие типы
73 Base64 Общие типы
74 Duration Общие типы

Смотрите также