DevGang
Авторизоваться

Создание тестовых данных в Laravel с помощью Factory и Seeder

Laravel Factory — инструмент для генерации поддельных данных, необходимых для тестирования или наполнения базы данных. Он задаёт стандартные значения для модели через метод definition(). Factory использует библиотеку Faker для создания правдоподобных случайных данных, имитирующих реальные данные. 

Laravel Seeder служит для заполнения базы данных фиктивными данными или значениями по умолчанию, часто применяясь для первоначальной настройки сред разработки, тестирования и производства. Seeder и Factory работают совместно, позволяя создавать большие объёмы структурированных тестовых данных.

Генерация Factory

Для создания Factory для модели Designations используется следующая команда artisan:

php artisan make:factory DesignationFactory --model=Designations

Генерация Seeder

Создаётся Seeder для таблицы Designations:

php artisan make:seeder DesignationSeeder

Модификация модели Designations

В модель Designations вносятся следующие изменения:

Файл: app/Models/Designations.php

app/Models/Designations.php
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Designations extends Model
{
    use HasFactory;

    protected $fillable = ['name', 'description'];
}

Изменение файла Seeder

Файл сида модифицируется для использования Factory при создании тестовых записей:

Файл: database/seeders/DesignationsSeeder.php

database/seeders/DesignationsSeeder.php
<?php

namespace Database\Seeders;

use Illuminate\Database\Seeder;
use App\Models\Designations;

class DesignationsSeeder extends Seeder
{
    /**
     * Run the database seeds.
     */
    public function run(): void
    {
        Designations::factory()
            ->count(3) // Number of records to create
            ->create();
    }
}

Настройка файла Factory

В файле Factory определяются атрибуты модели Designations:

Файл: database/factories/DesignationsFactory.php

database/factories/DesignationsFactory.php
<?php

namespace Database\Factories;

use App\Models\Designations;
use Illuminate\Database\Eloquent\Factories\Factory;

class DesignationsFactory extends Factory
{
    protected $model = Designations::class;

    /**
     * Define the model's default state.
     */
    public function definition(): array
    {
        return [
            'name' => fake()->name(),
            'description' => fake()->sentence(10),
        ];
    }
}

Запуск Seeder

Запуск Seeder для заполнения базы данных тестовыми данными:

php artisan db:seed --class=DesignationsSeeder

Заключение

В результате выполнения описанных шагов вы успешно создали Factory для генерации тестовых данных, настроили Seeder для заполнения базы данных и убедились в корректной настройке модели с использованием HasFactory. Это обеспечивает эффективный и упорядоченный подход к добавлению тестовых данных в ваше приложение Laravel.

Источник:

#PHP #Laravel #Testing
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

В этом месте могла бы быть ваша реклама

Разместить рекламу