Skip to content

Latest commit

 

History

History
137 lines (119 loc) · 6.21 KB

281-283 Faker – генератор фальшивых данных.md

File metadata and controls

137 lines (119 loc) · 6.21 KB

Faker – генератор фальшивых данных

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 и передать пользовательские счетчики или язык в аргументах консоли.

Примечание: будьте осторожны с существующими тестовыми файлами, если ваши тесты используют эти приспособления, потому что автогенерация полностью переписывает старые данные.

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