Fzaninotto/faker-это библиотека PHP, которая генерирует поддельные данные многих видов: имена, телефоны, адреса, случайные строки и числа и так далее. Это может помочь Вам создать много рандомизированных записей для тестирования производительности и логики. Вы можете расширить свою коллекцию поддерживаемых типов, написав собственные модули форматирования и генераторы. В скелетах приложения Yii2 оболочка yiisoft / yii2-faker включена в раздел require-dev файла composer.json, который используется для тестирования кода (Глава 11, тестирование). Эта оболочка предоставляет консоль FixtureController для использования в консольном приложении и тестовой среде.
Создайте новое приложение с помощью диспетчера пакетов Composer, как описано в официальном руководстве по адресу http://www.yiiframework.com/doc-2.0/guide-start-installation.html. По русски http://yiiframework.domain-na.me/doc/guide/2.0/ru/start-installation.
1 Откройте каталог tests/codeception/templates и добавьте файл шаблона fixture, users.txt:
<?php
/**
* @var $faker \Faker\Generator
* @var $index integer
*/
return [
'name' => $faker->firstName,
'phone' => $faker->phoneNumber,
'city' => $faker->city,
'about' => $faker->sentence(7, true),
'password' => Yii::$app->getSecurity() ->generatePasswordHash('password_' . $index),
'auth_key' => Yii::$app->getSecurity() ->generateRandomString(),
];
2 В консоли yii выполните команду test:
php tests/codeception/bin/yii fixture/generate users --count=2
3 Подтвердите создания миграции.
4 Убедитесь, что каталог tests/codeception/fixtures содержит новый users.php, с созданными автоматически данными:
return [
[
'name' => 'Isadore ',
'phone' => '952.877.8545x190',
'city' => 'New Marvinburgh',
'about' => 'Ut quidem voluptatem itaque veniam voluptas dolores.',
'password' =>'$2y$13$Fi3LOl/sKlomUH.DLgqBkOB/uCLmgCoPPL1KXiW0hffnkrdkjCzAC',
'auth_key' => '1m05hlgaAG8zfm0cyDyoRGMkbQ9W6hj1',
],
[
'name' => 'Raleigh',
'phone' => '1-655-488-3585x699',
'city' => 'Reedstad',
'about' => 'Dolorem quae impedit tempore libero doloribus nobis dicta tempora facere.',
'password' =>'$2y$13$U7Qte5Y1jVLrx/pnhwdwt.1uXDegGXuNVzEQyUsb65WkBtjyjUuYm',
'auth_key' => 'uWWJDgy5jNRk6KjqpxS5JuPv0OHearqE',
],
],
Работа с собственными типами данных
1 Создайте собственного поставщика с логикой создания настраиваемых значений:
<?php
namespace tests\codeception\faker\providers;
use Faker\Provider\Base;
class UserStatus extends Base
{
public function userStatus()
{
return $this->randomElement([0, 10, 20, 30]);
}
}
2 Добавить поставщика в список поставщиков услуг в интернет /tests/codeception/config/config.php:
return [
'controllerMap' => [
'fixture' => [
'class' => 'yii\faker\FixtureController',
'fixtureDataPath' => '@tests/codeception/fixtures',
'templatePath' => '@tests/codeception/templates',
'namespace' => 'tests\codeception\fixtures',
'providers' => [
'tests\codeception\faker\providers\UserStatus',
],
],
],
// ...
];
3 Добавьте поле статус в файл шаблона fixture:
<?php
/**
* @var $faker \Faker\Generator
* @var $index integer
*/
return [
'name' => $faker->firstName,
'status' => $faker->userStatus,
];
4 Регенерация fixtures с помощью команды консоли:
php tests/codeception/bin/yii fixture/generate users --count=2
5 Проверьте, что сгенерированный код в fixtures/users.php файл содержит ваши пользовательские значения:
return [
[
'name' => 'Christelle',
'status' => 30,
],
[
'name' => 'Theo',
'status' => 10,
],
];
Расширение yii2-faker содержит консольный генератор (который использует ваши шаблоны для создания файлов данных fixture) и дает вам подготовленный экземпляр исходного объекта Faker. Можно создать все или определенные fixture и передать пользовательские счетчики или язык в аргументах консоли.
Примечание: будьте осторожны с существующими тестовыми файлами, если ваши тесты используют эти приспособления, потому что автогенерация полностью переписывает старые данные.
Смотрите так же
- Исходный код и дополнительные сведения о расширении см. в разделе: https://github.com/yiisoft/yii2-faker/tree/master/docs/guide http://www.viiframework.com/doc-2.0/ext-faker-index.html
- И чтобы узнать больше об оригинальной библиотеке, обратитесь к: <https ://github. com/fzaninotto/Faker>
- Глава 11, Тестирование