Метод seed
Метод seed применяется в тестовых классах для наполнения базы данных тестовыми записями. Он вызывает выполнение указанных сидеров или всех доступных сидеров, если аргумент не передан. Метод полезен для подготовки базы данных к тестированию, особенно когда требуется предварительно заполнить таблицы справочными данными.
Синтаксис
<?php
$this->seed($class = null);
?>
Параметры метода:
-
$class- необязательный параметр, передаётся имя класса сидера, который нужно выполнить. Если параметр опущен, выполняются все сидеры из директорииdatabase/seeders.
Пример
Давайте выполним все сидеры в тестовом классе:
<?php
namespace Tests\Unit;
use Tests\TestCase;
class ArticleTest extends TestCase
{
public function test_article_count()
{
$this->seed();
$count = Article::count();
echo "Total articles: " . $count;
}
}
?>
Результат выполнения кода:
"Total articles: 50"
Пример
Давайте выполним конкретный сидер для заполнения категорий:
<?php
namespace Tests\Feature;
use Tests\TestCase;
use Database\Seeders\CategorySeeder;
class CategoryTest extends TestCase
{
public function test_category_seeding()
{
$this->seed(CategorySeeder::class);
$categories = Category::all();
foreach ($categories as $category) {
echo $category->name;
}
}
}
?>
Результат выполнения кода:
"Technology"
"Science"
"Business"
"Health"
Пример
Давайте выполним сидер перед каждым тестом с помощью метода setUp:
<?php
namespace Tests\Feature;
use Tests\TestCase;
use Database\Seeders\UserSeeder;
class UserTest extends TestCase
{
protected function setUp(): void
{
parent::setUp();
$this->seed(UserSeeder::class);
}
public function test_user_authentication()
{
$user = User::first();
$res = auth()->attempt([
'email' => $user->email,
'password' => 'password'
]);
echo $res ? "Authenticated" : "Not authenticated";
}
}
?>
Результат выполнения кода:
"Authenticated"
Смотрите также
-
класс
RefreshDatabase,
который управляет миграциями и сбрасывает состояние базы данных -
метод
setUp,
который выполняется перед каждым тестом -
метод
tearDown,
который выполняется после каждого теста -
класс
Factory,
который используется для создания моделей в тестах