Класс yii\faker\FixtureController
| Наследование | yii\faker\FixtureController » yii\console\controllers\FixtureController » yii\console\Controller » yii\base\Controller » yii\base\Component » yii\base\Object |
|---|---|
| Реализует | yii\base\Configurable, yii\base\ViewContextInterface |
| Использует Трейты | yii\test\FixtureTrait |
| Доступно с версии | 2.0.0 |
| Исходный код | https://github.com/yiisoft/yii2-faker/blob/master/FixtureController.php |
Эта команда создаёт фикстуры на основе заданного шаблона.
Фикстуры являются важными элементами в тестировании юнит-тестов. Для ускорения работы разработчиков эти фикстуры могут быть сгенерированы автоматически на основе подготовленного шаблона. Эта команда является простым оболочкой для библиотеки Faker.
Вы должны настроить свою приложение следующим образом (вы можете использовать любой псевдоним, а не только "fixture"):
'controllerMap' => [
'fixture' => [
'class' => 'yii\faker\FixtureController',
],
],
Для начала использования команды вам нужно ознакомиться (прочитать руководство) с библиотекой Faker и сгенерировать файлы шаблонов фикстур в соответствии с заданным форматом:
// users.php file under template path (by default @tests/unit/templates/fixtures)
return [
'name' => $faker->firstName,
'phone' => $faker->phoneNumber,
'city' => $faker->city,
'password' => Yii::$app->getSecurity()->generatePasswordHash('password_' . $index),
'auth_key' => Yii::$app->getSecurity()->generateRandomString(),
'intro' => $faker->sentence(7, true), // generate a sentence with 7 words
];
Если вы используете обратный вызов в качестве значения атрибута, он будет вызван со следующими тремя параметрами:
-
$faker: экземпляр генератора Faker -
$index: текущий индекс фикстуры. Например, если нужно сгенерировать 3 фикстуры для таблицы пользователей, он будет от 0 до 2.
После установки всех необходимых полей в обратном вызове, вы должны вернуть массив $fixture обратно из обратного вызова.
После подготовки необходимых шаблонов для таблиц вы можете просто сгенерировать фикстуры с помощью команды
yii fixture/generate user //generate fixtures from several templates, for example: yii fixture/generate user profile team
В приведенном выше коде "users" - это имя шаблона, после выполнения этой команды будет создан новый файл с таким же именем, что и шаблон, в папке $fixtureDataPath. Вы можете сгенерировать фикстуры для всех шаблонов, например:
yii fixture/generate-all
Эта команда сгенерирует фикстуры для всех файлов шаблонов, которые хранятся в $templatePath и сохранит фикстуры в $fixtureDataPath с именами файлов, совпадающими с именами шаблонов.
Вы можете указать, сколько фикстур на файл, используя второй параметр. В приведенном ниже коде мы генерируем все фикстуры, и в каждом файле будет по 3 строки (фикстуры).
yii fixture/generate-all --count=3
Вы можете указать различные параметры этой команды:
//generate fixtures in russian language yii fixture/generate user --count=5 --language=ru_RU //read templates from the other path yii fixture/generate-all --templatePath=@app/path/to/my/custom/templates //generate fixtures into other folders yii fixture/generate-all --fixtureDataPath=@tests/unit/fixtures/subfolder1/subfolder2/subfolder3
Вы можете увидеть все доступные шаблоны, выполнив команду:
//list all templates under default template path (i.e. '@tests/unit/templates/fixtures') yii fixture/templates //list all templates under specified template path yii fixture/templates --templatePath='@app/path/to/my/custom/templates'
Вы также можете создать собственные поставщики данных для полей пользовательских таблиц, см. руководство библиотеки Faker для получения дополнительной информации (https://github.com/fzaninotto/Faker); После создания пользовательского поставщика, например:
class Book extends \Faker\Provider\Base
{
public function title($nbWords = 5)
{
$sentence = $this->generator->sentence($nbWords);
return mb_substr($sentence, 0, mb_strlen($sentence) - 1);
}
}
вы можете использовать его, добавив его в свойство $providers текущей команды. В вашем конфигурационном файле console.php:
'controllerMap' => [
'fixture' => [
'class' => 'yii\faker\FixtureController',
'providers' => [
'app\tests\unit\faker\providers\Book',
],
],
],
Публичные свойства
| Свойство | Тип | Описание | Определено в |
|---|---|---|---|
| $action | yii\base\Action | Действие, которое в настоящее время выполняется. | yii\base\Controller |
| $behaviors | yii\base\Behavior[] | Список присоединенных к этому компоненту поведений. | yii\base\Component |
| $color | boolean | Включить ANSI цвет в выводе. | yii\console\Controller |
| $count | integer | Общее количество данных на фикстуру. | yii\faker\FixtureController |
| $defaultAction | string | Идентификатор действия по умолчанию контроллера. | yii\console\controllers\FixtureController |
| $fixtureDataPath | string | Псевдоним пути к данным фикстур, куда следует записывать файлы данных. | yii\faker\FixtureController |
| $fixtures | yii\test\Fixture[] | Загруженные фикстуры для текущего тестового случая. | yii\test\FixtureTrait |
| $generator | \Faker\Generator | yii\faker\FixtureController | |
| $globalFixtures | array | Глобальные фикстуры, которые должны применяться при загрузке и выгрузке. | yii\console\controllers\FixtureController |
| $help | boolean | Выводить ли справочную информацию о текущей команде. | yii\console\Controller |
| $helpSummary | string | yii\console\Controller | |
| $id | string | Идентификатор этого контроллера. | yii\base\Controller |
| $interactive | boolean | Выполнять команду в интерактивном режиме. | yii\console\Controller |
| $language | string | Язык для генерации данных фикстур. | yii\faker\FixtureController |
| $layout | null|string|false | Имя макета, который будет применяться к представлениям этого контроллера. | yii\base\Controller |
| $module | yii\base\Module | Модуль, к которому принадлежит этот контроллер. | yii\base\Controller |
| $modules | yii\base\Module[] | Все родительские модули, в которых находится этот контроллер. | yii\base\Controller |
| $namespace | string | Пространство имён по умолчанию для поиска фикстур. | yii\console\controllers\FixtureController |
| $passedOptionValues | array | Свойства, соответствующие переданным опциям. | yii\console\Controller |
| $passedOptions | array | Названия опций, переданных во время выполнения. | yii\console\Controller |
| $providers | array | Дополнительные поставщики данных, которые могут быть созданы пользователем и будут добавлены к генератору Faker. | yii\faker\FixtureController |
| $route | string | Маршрут (идентификатор модуля, контроллера и действия) текущего запроса. | yii\base\Controller |
| $templatePath | string | Псевдоним пути к шаблонам, где хранятся шаблоны всех таблиц. | yii\faker\FixtureController |
| $uniqueId | string | Идентификатор контроллера, дополненный идентификатором модуля (если таковой имеется). | yii\base\Controller |
| $view | yii\base\View|yii\web\View | Объект представления, который можно использовать для рендеринга представлений или файлов представлений. | yii\base\Controller |
| $viewPath | string | Директория, содержащая файлы представлений для этого контроллера. | yii\base\Controller |
Общие методы
| Метод | Описание | Определено в |
|---|---|---|
| __call() | Вызывает именованный метод, который не является методом класса. | yii\base\Object |
| __clone() | Этот метод вызывается после создания объекта путём клонирования существующего. | yii\base\Component |
| __construct() | yii\base\Controller | |
| __get() | Возвращает значение свойства объекта. | yii\base\Object |
| __isset() | Проверяет, установлено ли свойство, т.е. определено и не равно null. | yii\base\Object |
| __set() | Устанавливает значение свойства объекта. | yii\base\Object |
| __unset() | Устанавливает свойство объекта в null. | yii\base\Object |
| actionGenerate() | Генерирует фикстуры и заполняет их данными Faker. | yii\faker\FixtureController |
| actionGenerateAll() | Генерирует все шаблоны фикстур, которые можно найти. | yii\faker\FixtureController |
| actionLoad() | Загружает указанные данные фикстуры. | yii\console\controllers\FixtureController |
| actionTemplates() | Отображает все доступные файлы шаблонов фикстур. | yii\faker\FixtureController |
| actionUnload() | Выгружает указанные фикстуры. | yii\console\controllers\FixtureController |
| actions() | Объявляет внешние действия для контроллера. | yii\base\Controller |
| addProviders() | Добавляет поставщиков пользователей в генератор faker. | yii\faker\FixtureController |
| afterAction() | Этот метод вызывается сразу после выполнения действия. | yii\base\Controller |
| ansiFormat() | Форматирует строку с кодами ANSI | yii\console\Controller |
| attachBehavior() | Прикрепляет поведение к этому компоненту. | yii\base\Component |
| attachBehaviors() | Прикрепляет список поведений к компоненту. | yii\base\Component |
| beforeAction() | Этот метод вызывается сразу перед выполнением действия. | yii\faker\FixtureController |
| behaviors() | Возвращает список поведений, которые должен использовать этот компонент. | yii\base\Component |
| bindActionParams() | Связывает параметры с действием. | yii\console\Controller |
| canGetProperty() | Возвращает значение, указывающее, можно ли прочитать свойство. | yii\base\Object |
| canSetProperty() | Возвращает значение, указывающее, можно ли установить свойство. | yii\base\Object |
| checkPaths() | Проверяет, существуют ли и доступны для записи пути шаблонов и миграций. | yii\faker\FixtureController |
| className() | Возвращает полное квалифицированное имя этого класса. | yii\base\Object |
| confirm() | Запрашивает у пользователя подтверждение, введя y или n. | yii\console\Controller |
| confirmGeneration() | Запрашивает у пользователя подтверждение генерации с заданными шаблонами файлов фикстур. | yii\faker\FixtureController |
| createAction() | Создаёт действие на основе заданного идентификатора действия. | yii\base\Controller |
| detachBehavior() | Отсоединяет поведение от компонента. | yii\base\Component |
| detachBehaviors() | Отсоединяет все поведения от компонента. | yii\base\Component |
| ensureBehaviors() | Убеждается, что поведения, объявленные в behaviors(), прикреплены к этому компоненту. | yii\base\Component |
| exportFixtures() | Возвращает экспортированное в строковое представление заданного массива фикстур. | yii\faker\FixtureController |
| findLayoutFile() | Находит соответствующий файл макета. | yii\base\Controller |
| fixtures() | Объявляет фикстуры, необходимые для текущего тестового случая. | yii\test\FixtureTrait |
| generateFixture() | Генерирует фикстуру из заданного шаблона | yii\faker\FixtureController |
| generateFixtureFile() | Генерирует файл фикстуры по заданному шаблону файла фикстуры. | yii\faker\FixtureController |
| getActionArgsHelp() | Возвращает справочную информацию об анонимных аргументах для действия. | yii\console\Controller |
| getActionHelp() | Возвращает подробную справочную информацию для указанного действия. | yii\console\Controller |
| getActionHelpSummary() | Возвращает однострочное краткое описание указанного действия. | yii\console\Controller |
| getActionOptionsHelp() | Возвращает справочную информацию по параметрам действия. | yii\console\Controller |
| getBehavior() | Возвращает объект поведения с заданным именем. | yii\base\Component |
| getBehaviors() | Возвращает все поведения, прикреплённые к этому компоненту. | yii\base\Component |
| getFixture() | Возвращает указанную фикстуру. | yii\test\FixtureTrait |
| getFixtures() | Возвращает объекты фикстур, как указано в globalFixtures() и fixtures(). | yii\test\FixtureTrait |
| getGenerator() | Возвращает экземпляр генератора Faker. Геттер для приватного свойства. | yii\faker\FixtureController |
| getHelp() | Возвращает справочную информацию для этого контроллера. | yii\console\Controller |
| getHelpSummary() | Возвращает однострочное краткое описание этого контроллера. | yii\console\Controller |
| getModules() | Возвращает все родительские модули этого контроллера. | yii\base\Controller |
| getOptionValues() | Возвращает свойства, соответствующие параметрам для действия. Дочерние классы могут переопределить этот метод, чтобы указать возможные свойства. | yii\console\Controller |
| getPassedOptionValues() | Возвращает свойства, соответствующие переданным параметрам. | yii\console\Controller |
| getPassedOptions() | Возвращает имена допустимых параметров, переданных во время выполнения. | yii\console\Controller |
| getRoute() | Возвращает маршрут текущего запроса. | yii\base\Controller |
| getUniqueId() | Возвращает уникальный идентификатор контроллера. | yii\base\Controller |
| getView() | Возвращает объект представления, который может быть использован для рендеринга представлений или файлов представлений. | yii\base\Controller |
| getViewPath() | Возвращает каталог, содержащий файлы представлений для данного контроллера. | yii\base\Controller |
| globalFixtures() | Объявляет фикстуры, общие для различных тестовых случаев. | yii\test\FixtureTrait |
| hasEventHandlers() | Возвращает значение, указывающее, есть ли обработчики, прикрепленные к указанному событию. | yii\base\Component |
| hasMethod() | Возвращает значение, указывающее, определен ли метод. | yii\base\Object |
| hasProperty() | Возвращает значение, указывающее, определено ли свойство. | yii\base\Object |
| init() | Инициализирует объект. | yii\base\Object |
| initFixtures() | Инициализирует фикстуры | yii\test\FixtureTrait |
| isColorEnabled() | Возвращает значение, указывающее, включен ли цвет ANSI. | yii\console\Controller |
| loadFixtures() | Загружает указанные фикстуры. | yii\test\FixtureTrait |
| needToApplyAll() | Проверяет, необходимо ли применить все фикстуры. | yii\console\controllers\FixtureController |
| notifyNothingToLoad() | Уведомляет пользователя, что нет фикстур для загрузки в соответствии с входными условиями. | yii\console\controllers\FixtureController |
| notifyNothingToUnload() | Уведомляет пользователя, что нет фикстур для разгрузки в соответствии с входными условиями. | yii\console\controllers\FixtureController |
| off() | Отсоединяет существующий обработчик событий от этого компонента. | yii\base\Component |
| on() | Прикрепляет обработчик событий к событию. | yii\base\Component |
| optionAliases() | Возвращает псевдонимы параметров. | yii\console\controllers\FixtureController |
| options() | Возвращает имена допустимых параметров для действия (id). Параметр требует существования открытой переменной-члена, имя которой — имя параметра. | yii\faker\FixtureController |
| prompt() | Запрашивает у пользователя ввод и проверяет его | yii\console\Controller |
| render() | Рендерит представление и применяет макет, если он доступен. | yii\base\Controller |
| renderContent() | Рендерит статическую строку, применяя макет. | yii\base\Controller |
| renderFile() | Рендерит файл представления. | yii\base\Controller |
| renderPartial() | Рендерит представление без применения макета. | yii\base\Controller |
| run() | Выполняет запрос, указанный в терминах маршрута. | yii\base\Controller |
| runAction() | Выполняет действие с указанным идентификатором действия и параметрами. | yii\console\Controller |
| select() | Предоставляет пользователю возможность выбора из вариантов. Ввод «?» отобразит список вариантов с их пояснениями. | yii\console\Controller |
| setView() | Устанавливает объект представления, который будет использоваться этим контроллером. | yii\base\Controller |
| setViewPath() | Устанавливает каталог, содержащий файлы представлений. | yii\base\Controller |
| stderr() | Выводит строку в STDERR | yii\console\Controller |
| stdout() | Выводит строку в STDOUT | yii\console\Controller |
| trigger() | Вызывает событие. | yii\base\Component |
| unloadFixtures() | Разгружает указанные фикстуры. | yii\test\FixtureTrait |
Защищенные методы
| Метод | Описание | Определено в |
|---|---|---|
| createFixtures() | Создает указанные экземпляры фикстур. | yii\test\FixtureTrait |
| findTemplatesFiles() | Возвращает массив, содержащий имена файлов шаблонов фикстур. Вы можете указать, какие файлы искать, используя данный параметр. | yii\faker\FixtureController |
| getActionMethodReflection() | yii\console\Controller | |
| notifyNoTemplatesFound() | Уведомляет пользователя, что не найдено ни одного файла, соответствующего заданным условиям. | yii\faker\FixtureController |
| notifyNotFoundTemplates() | Уведомляет пользователя, что заданные файлы шаблонов фикстур не найдены. | yii\faker\FixtureController |
| notifyTemplatesCanBeGenerated() | Уведомляет пользователя о шаблонах, которые могут быть сгенерированы. | yii\faker\FixtureController |
| notifyTemplatesGenerated() | Уведомляет пользователя, что заданные файлы шаблонов фикстур были сгенерированы. | yii\faker\FixtureController |
| parseDocCommentDetail() | Возвращает полное описание из блоков документации. | yii\console\Controller |
| parseDocCommentSummary() | Возвращает первую строку блока документации. | yii\console\Controller |
| parseDocCommentTags() | Парсит блок комментариев на метки. | yii\console\Controller |
События
| Событие | Тип | Описание | Определено в |
|---|---|---|---|
| EVENT_AFTER_ACTION | yii\base\ActionEvent | Событие, срабатывающее сразу после выполнения действия контроллера. | yii\base\Controller |
| EVENT_BEFORE_ACTION | yii\base\ActionEvent | Событие, срабатывающее непосредственно перед выполнением действия контроллера. | yii\base\Controller |
Постоянные значения
| Константа | Значение | Описание | Определено в |
|---|---|---|---|
| EXIT_CODE_ERROR | 1 | yii\console\Controller | |
| EXIT_CODE_NORMAL | 0 | yii\console\Controller |
Подробное описание свойств
$count общедоступное свойство
Общее количество данных на фикстуру. По умолчанию равно 2.
public integer $count = 2
$fixtureDataPath общедоступное свойство
Псевдоним пути к данным фикстуры, куда должны записываться файлы данных.
public string $fixtureDataPath = '@tests/unit/fixtures/data'
$generator общедоступное только для чтения свойство
public \Faker\Generator getGenerator ( )
$language общедоступное свойство
Язык, используемый при генерации данных фикстуры.
public string $language = null
$providers общедоступное свойство
Дополнительные поставщики данных, которые могут быть созданы пользователем и будут добавлены к генератору Faker. Дополнительная информация в документации библиотеки Faker.
public array $providers = []
$templatePath общедоступное свойство
Псевдоним пути к шаблонам, где хранятся все шаблоны таблиц.
public string $templatePath = '@tests/unit/templates/fixtures'
Подробное описание методов
actionGenerate() public method
Генерирует фикстуры и заполняет их данными Faker.
Например,
//generate fixtures in russian language yii fixture/generate user --count=5 --language=ru_RU //generate several fixtures yii fixture/generate user profile team
| public void actionGenerate ( ) | ||
|---|---|---|
| throws | yii\base\InvalidParamException | |
| throws | yii\console\Exception | |
actionGenerateAll() public method
Генерирует все шаблоны фикстур, которые могут быть найдены.
| public void actionGenerateAll ( ) |
|---|
actionTemplates() public method
Отображает все доступные файлы шаблонов фикстур.
| public void actionTemplates ( ) |
|---|
addProviders() public method
Добавляет поставщиков пользователей в генератор Faker.
| public void addProviders ( ) |
|---|
beforeAction() public method
Этот метод вызывается непосредственно перед выполнением действия.
Метод вызовет событие EVENT_BEFORE_ACTION. Значение возвращаемого методом результата определит, следует ли продолжать выполнение действия.
В случае, если действие не должно выполняться, обработка запроса должна быть выполнена внутри кода beforeAction, либо путем предоставления необходимого вывода, либо перенаправлением запроса. В противном случае ответ будет пустым.
Если вы переопределяете этот метод, ваш код должен выглядеть следующим образом:
public function beforeAction($action)
{
// your custom code here, if you want the code to run before action filters,
// which are triggered on the [[EVENT_BEFORE_ACTION]] event, e.g. PageCache or AccessControl
if (!parent::beforeAction($action)) {
return false;
}
// other custom code here
return true; // or false to not run the action
}
| public boolean beforeAction ( $action ) | ||
|---|---|---|
| $action | yii\base\Action |
Действие, подлежащее выполнению. |
| return | boolean |
Следует ли продолжить выполнение действия. |
checkPaths() public method
Проверяет, существуют ли и доступны для записи пути к шаблонам и миграциям.
| public void checkPaths ( ) |
|---|
confirmGeneration() public method
Запрашивает у пользователя подтверждение генерации с заданными файлами шаблонов фикстур.
| public boolean confirmGeneration ( $files ) | ||
|---|---|---|
| $files | array | |
exportFixtures() public method
Возвращает экспортированное в строковое представление массив заданных фикстур.
| public string exportFixtures ( $fixtures ) | ||
|---|---|---|
| $fixtures | array | |
| return | string |
Формат экспортированных фикстур |
findTemplatesFiles() protected method (available since version 2.0.4)
Возвращает массив, содержащий имена файлов шаблонов фикстур. Можно указать, какие файлы искать, используя заданный параметр.
| protected array findTemplatesFiles ( array $templatesNames = [] ) | ||
|---|---|---|
| $templatesNames | array |
Имена файлов шаблонов для поиска. Если пусто, то будут найдены все файлы. |
generateFixture() public method
Генерирует фикстуру из заданного шаблона
| public array generateFixture ( $_template_, $index ) | ||
|---|---|---|
| $_template_ | string |
Файл шаблона фикстуры |
| $index | integer |
Текущий индекс фикстуры |
| return | array |
Фикстура |
generateFixtureFile() public method
Генерирует файл фикстуры по заданному файлу шаблона фикстуры.
| public void generateFixtureFile ( $templateName, $templatePath, $fixtureDataPath ) | ||
|---|---|---|
| $templateName | string |
Имя файла шаблона |
| $templatePath | string |
Путь, где хранятся шаблоны |
| $fixtureDataPath | string |
Путь к данным фикстуры, куда должен быть записан сгенерированный файл |
getGenerator() public method
Возвращает экземпляр генератора Faker. Геттер для закрытого свойства.
| public \Faker\Generator getGenerator ( ) |
|---|
notifyNoTemplatesFound() protected method (available since version 2.0.4)
Уведомляет пользователя, что не было найдено ни одного файла, соответствующего заданным условиям.
| protected void notifyNoTemplatesFound ( ) |
|---|
notifyNotFoundTemplates() protected method (available since version 2.0.4)
Уведомляет пользователя, что заданные файлы шаблонов фикстур не были найдены.
| protected void notifyNotFoundTemplates ( $templatesNames ) | ||
|---|---|---|
| $templatesNames | array | |
notifyTemplatesCanBeGenerated() protected method (available since version 2.0.4)
Уведомляет пользователя о шаблонах, которые могут быть сгенерированы.
| protected void notifyTemplatesCanBeGenerated ( $templatesNames ) | ||
|---|---|---|
| $templatesNames | array | |
notifyTemplatesGenerated() protected method (available since version 2.0.4)
Уведомляет пользователя, что заданные файлы шаблонов фикстур были сгенерированы.
| protected void notifyTemplatesGenerated ( $templatesNames ) | ||
|---|---|---|
| $templatesNames | array | |
options() public method
Возвращает имена допустимых опций для действия (id). Опция требует наличия публичного члена, имя которого совпадает с именем опции.
Подклассы могут переопределить этот метод, чтобы указать возможные опции.
Обратите внимание, что значения, заданные с помощью опций, недоступны до вызова beforeAction().
| public string[] options ( $actionID ) | ||
|---|---|---|
| $actionID | string |
Идентификатор действия текущего запроса |
| return | string[] |
Имена опций, допустимых для действия |
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc-2.0/yii-faker-fixturecontroller.html