# echolot fake (/ru/docs/cli/fake)

`echolot fake` наполняет шаблон тестовыми данными: именами, адресами электронной почты, адресами, ценами, датами,
lorem ipsum и ещё примерно 120 другими значениями. Он использует те же шаблоны, что и тела [маршрутов, созданных
вручную](/docs/mocks/routes#bodies-with-fake-data), так что можно опробовать тело или написать фикстуры и начальные
данные для тестов.

```sh
echolot fake [<template>] [--file <file>] [--count <count>] [--seed <seed>] [--type <type>]
echolot fake list
```

Шаблон берётся из аргумента, из `--file` или из стандартного ввода. Результат идёт в стандартный вывод.

## Создание списка [#make-a-list]

`--count` превращает шаблон в один элемент списка JSON:

```sh
echolot fake '{"id": {{@number}}, "name": "{{$randomFullName}}", "email": "{{$randomEmail}}"}' --count 3
```

```json
[
{"id": 1, "name": "Henry Adams", "email": "stella.meyer.45@yahoo.com"},
{"id": 2, "name": "Jack Grant", "email": "bianca.ivanova.11@icloud.com"},
{"id": 3, "name": "Theo Sato", "email": "samuel.lee.88@yahoo.com"}
]
```

С `--type xml` или `--type text` элементы идут один за другим:

```sh
echolot fake '<city>{{$randomCity}}</city>' --count 2 --type xml
```

```xml
<city>Kyoto</city>
<city>Athens</city>
```

Шаблон может сам создавать списки с помощью `{{#repeat 10}}` … `{{/repeat}}`; см. [списки](/docs/mocks/routes#lists).

## Те же данные снова [#the-same-data-again]

`--seed` создаёт одни и те же данные каждый раз — для фикстур, которые не должны меняться от прогона к прогону:

```sh
echolot fake --file user.json.template --count 50 --seed 7 > users.json
```

## Экранирование [#escaping]

`--type` определяет, как экранируются значения: `json` (по умолчанию) экранирует значения внутри строк JSON, `xml`
экранирует `&`, `<`, `>` и кавычки для XML и HTML, `text` не экранирует ничего. См.
[экранирование](/docs/mocks/routes#escaping).

## Значения [#the-values]

`echolot fake list` печатает все значения по группам, с их аргументами:

```text
COMMON
  $randomUUID  A random UUID: 3f2c1e0a-…
  $randomInt(Minimum, Maximum)  A whole number, 0 to 1000 unless bounds are given.
  $randomFloat(Minimum, Maximum, Decimals)  A decimal number between the bounds (0 to 1000), with 2 decimals unless told otherwise.
…
```

Все они перечислены в [динамических значениях](/docs/reference/dynamic-values#fake-data). Токены о запросе, такие как
`{{request.params.id}}`, принадлежат маршрутам мока и остаются здесь как написаны.

## Параметры [#options]

| Параметр | Значение |
| --- | --- |
| `<template>` | Шаблон или `list`, чтобы перечислить тестовые значения. |
| `-f`, `--file <file>` | Прочитать шаблон из файла. |
| `-c`, `--count <count>` | Создать столько элементов, до 10 000: список JSON или один элемент за другим для `--type xml` и `text`. |
| `--seed <seed>` | Создавать одни и те же данные каждый раз. |
| `--type <type>` | `json` (по умолчанию), `xml` или `text`. |

## Коды выхода [#exit-codes]

`0`, когда все значения созданы. `1`, когда значение создать не удалось, например `{{$randomInt(9, 1)}}`: причина идёт в
стандартный поток ошибок, а токен остаётся в выводе как написан. `64` — при неверном параметре.
