Фабрики Laravel: Створення реалістичних тестових даних за допомогою заводських шаблонів Laravel ⋆ ALexHost SRL

Перевірте свої навички на всіх наших хостингових послугах та отримайте знижку 15%!

Використовуйте код під час оформлення замовлення:

Skills
09.12.2024
No categories

Фабрики Laravel: Створення реалістичних тестових даних за допомогою заводських шаблонів Laravel

Створення надійних додатків з безперебійними робочими процесами тестування та розробки вимагає надійної хостингової платформи. VPS-хостинг від AlexHost забезпечує ідеальне середовище для проектів на Laravel, пропонуючи повний root-доступ, високу продуктивність і безпечну інфраструктуру. З AlexHost ви можете розгортати свої додатки Laravel і керувати складними сценаріями тестування, наприклад, за допомогою Laravel Factories, з упевненістю і легкістю.

При розробці додатків на Laravel тестування є важливою частиною забезпечення того, щоб ваш додаток поводився так, як очікується. Щоб зробити тестування більш ефективним, вам потрібні реалістичні тестові дані, які максимально наближені до даних, з якими ваш додаток буде працювати у виробництві. Фабрики Laravel надають простий, але потужний спосіб створення таких даних за допомогою фабричних шаблонів. Фабрики дозволяють вам визначати, як мають виглядати моделі, що дає змогу швидко генерувати тестові дані.

Цей посібник проведе вас через процес створення та використання фабрик 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:


use Illuminate\Database\Eloquent\Factories\Factory;

використати Illuminate\Support\Str;

class UserFactory extends Factory

{

protected $model = User::class;

public function definition()

{

return [

'name' => $this->faker->name,

'email' => $this->faker->unique()->safeEmail,

'email_verified_at' => now(),

'password' => bcrypt('password'), // або 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. Використання стану

Використання стану адміністратора при створенні користувачів:

$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,

]);

}

Цей тест створює користувача, а потім перевіряє, чи існує він у таблиці користувачів із вказаним email.

Крок 6: Заповнення бази даних фабриками

Фабрики також можуть бути використані в розмножувачах баз даних для заповнення таблиць зразками даних.

6.1. Створення задатчика

Створіть сівалку за допомогою команди artisan:

php artisan make:seeder UserSeeder

Відкрийте файл UserSeeder.php у каталозі database/seeders і скористайтеся фабрикою для створення користувачів:


використовувати Illuminate\Database\Seeder;

class UserSeeder extends Seeder

{

public function run()

{

User::factory()->count(50)->create();

}

}

Цей сівалка створить 50 користувачів за допомогою фабрики користувачів.

6.2. Запуск сівалки

Запустіть сівалку за допомогою:

php artisan db:seed –class=UserSeeder

Ця команда заповнить таблицю користувачів 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();

Це створить пост разом з користувачем, який з ним пов’язаний.

Висновок

Фабрики Laravel – це потужний інструмент для створення реалістичних тестових даних, що робить ваші тести більш надійними, а процес розробки швидшим. Використовуючи фабричні шаблони, ви можете легко створювати варіації моделей, імітувати різну поведінку користувачів і наповнювати бази даних. Розуміння того, як використовувати стани, зв’язки та кастомну генерацію даних за допомогою фабрик Laravel, значно покращить ваш робочий процес тестування та розробки. Щасливого кодування!

Перевірте свої навички на всіх наших хостингових послугах та отримайте знижку 15%!

Використовуйте код під час оформлення замовлення:

Skills