Изпробвайте уменията си за всички наши хостинг услуги и получете 15% отстъпка!

Използвайте код на касата:

Skills
09.12.2024
No categories

Фабрики на Laravel: Изграждане на реалистични тестови данни с моделите на фабриките на Laravel

Фабрики на Laravel на AlexHost VPS: Тествайте като професионалист

Защо фабриките на Laravel на AlexHost? Фабриките на Laravel са вашият пряк път за генериране на реалистични тестови данни, което прави разработката и тестването на приложенията ви лесни. В съчетание с VPS хостинга на AlexHost – пълен сroot достъп, SSD скорост и невероятна сигурност – имате перфектната площадка за изграждане и тестване на приложения на Laravel. Това ръководство ще ви запознае със създаването и използването на фабрики за бързо получаване на тестови данни, за да сте сигурни, че приложението ви е готово за производство.

Какво представляват фабриките в Laravel?

Фабриките в Laravel са класове, които дефинират план за създаване на екземпляри на модели. Те са особено полезни за генериране на фалшиви тестови данни или за захранване на бази данни с оригинални данни. С помощта на фабриките можете да създавате единични или множество екземпляри на вашите модели, всеки от които има уникални атрибути.

Фабриките използват Faker, PHP библиотека за генериране на фалшиви данни, като имена, адреси, имейли и други, за да изглеждат данните реалистични.

Предварителни условия

  • Laravel 9 или по-нова версия.
  • Основни познания за моделите Eloquent и структурата на базата данни на Laravel.
  • Връзка към база данни, конфигурирана във вашия .env файл.

Стъпка 1: Създаване на фабрика за модели

В Laravel 8 и по-нови версии фабриките се дефинират като класове. Можете да създадете нова фабрика, като използвате командата artisan:

php artisan make:factory UserFactory

Това ще създаде нов файл на фабриката в директорията database/factories с име UserFactory.php.

Стъпка 2: Дефиниране на фабриката

Отворете файла UserFactory.php, намиращ се в database/factories:


'email' => $this->faker->unique()->safeEmail,
'email_verified_at' => now(),
'password' => bcrypt('password'), // or Hash::make('password')
'remember_token' => Str::random(10),
];}}

Обяснение

  • $model: Посочва за кой модел на Eloquent е предназначена тази фабрика.
  • definition(): Този метод връща масив от атрибути, които определят модела. Той използва инстанцията на Faker ($this->faker), за да генерира случайни данни за всеки атрибут.
  • name: Използва faker->name, за да генерира реалистично име.
  • email: използва faker->unique()->safeEmail, за да генерира уникален имейл адрес.
  • password: Задава парола по подразбиране, като използва функцията bcrypt().
  • remember_token: Генерира случаен низ за полето remember_token.

Тази фабрична дефиниция ще създаде реалистични потребителски пълномощия с уникален имейл и случайни имена.

Стъпка 3: Използване на фабрики за създаване на екземпляри на модела

Можете да използвате фабриката за създаване на единични или множество екземпляри на даден модел. Ето някои примери:

3.1. Създаване на единичен потребител

За да създадете единичен екземпляр на потребител в тест или сеялка, използвайте метода create:

$user = \App\Models\User::factory()->create();

Това създава потребител в базата данни с атрибутите, дефинирани във фабриката.

3.2. Създаване на множество потребители

За да създадете множество екземпляри на потребители:

$users = \App\Models\User::factory()->count(10)->create();

Това създава 10 записа на потребители в базата данни.

3.3. Създаване на инстанция без запазване (метод Make)

Ако искате да създадете инстанция, без да я запазвате в базата данни, използвайте метода make:

$user = \App\Models\User::factory()->make();

Това ще създаде обект на модела User, без да го запазва в базата данни.

Стъпка 4: Персонализиране на фабричните състояния

Състоянията ви позволяват да дефинирате различни версии на фабриката, което може да е полезно за създаване на потребители с различни роли или статуси.

4.1. Дефиниране на състояние

Можете да дефинирате състояния в класа на фабриката:

public function admin()
{
return $this->state(function (array $attributes) {
return [
'is_admin' => true,
];
});
}

Това състояние на администратор може да се използва за създаване на потребители с атрибут is_admin, зададен на true.

4.2. Използване на състоянието

За да използвате състоянието admin при създаване на потребители:

$adminUser = \App\Models\User::factory()->admin()->create();

Това ще създаде потребител с атрибут is_admin, зададен на true.

Стъпка 5: Използване на фабрики в тестовете

Фабриките са особено мощни при писането на тестове. Те ви позволяват бързо да създавате тестови данни и да се фокусирате върху логиката, която тествате.

5.1. Създаване на тестови данни в тестови случай

Ето един пример за използване на фабрика в тест:

public function test_users_can_be_created()
{
$user = \App\Models\User::factory()->create();$this->assertDatabaseHas('users', [
'email' => $user->email,
]);
}

Този тест създава потребител и след това проверява дали той съществува в таблицата users с посочения имейл.

Стъпка 6: Попълване на базата данни с фабрики

Фабриките могат да се използват и в сеялките на базата данни за попълване на примерните таблици с данни.

6.1. Създаване на сеялка

Създайте сеедер, като използвате командата artisan:

php artisan make:seeder UserSeeder

Отворете файла UserSeeder.php в database/seeders и използвайте фабриката за генериране на потребители:


}
}

Този сеяч ще създаде 50 потребители, като използва фабриката User.

6.2. Стартиране на сеялката

Стартирайте сеялката, като използвате:

php artisan db:seed --class=UserSeeder

Тази команда попълва таблицата users с 50 произволни записа на потребители.

Стъпка 7: Използване на връзки във фабриките

Ако имате модели с връзки, като например User (Потребител) и Post (Публикация), можете да създадете фабрики, които създават свързани данни:

7.1. Дефинирайте връзки

В PostFactory.php:

public function definition()
{
return [
'user_id' => \App\Models\User::factory(),
'title' => $this->faker->sentence,
'body' => $this->faker->paragraph,
];
}

Тази дефиниция гарантира, че когато се създава публикация, автоматично се генерира потребител, като се използва фабриката за потребители.

7.2. Създаване на публикация с асоцииран потребител

$post = \App\Models\Post::factory()->create();

Това ще създаде публикация с асоцииран към нея потребител.

Заключение: Фабрики AlexHost = Нирвана за тестване

Фабриките на Ларавел правят тестовите данни лесни за изпълнение, а VPS на AlexHost дава на вашето приложение на Ларавел скоростта и контрола, за да блесне. От единични потребители до сложни взаимоотношения, фабриките рационализират тестването и посяването. Разположете на своя VPS, стартирайте php artisan db:seed и наблюдавайте как приложението ви оживява. Имате нужда от помощ? AlexHost ви помага – кодирайте, тествайте, завладявайте!

Изпробвайте уменията си за всички наши хостинг услуги и получете 15% отстъпка!

Използвайте код на касата:

Skills

Похожие записи не найдены.