Laravel UnitTest и база данных

Avron2

Новичок
Есть некий компонент, модули которого тестирую в Laravel. Все замечательно тестируется, но есть вопросы как лучше сделать и правильно ли я понимаю этот процесс.
В компоненте 4 класса, для каждого из них есть класс с тесом. Компонент работает с БД: создание, поиск, удаление записей. Все замечательно работает, но есть следующие вопросы:

1. Есть Seeders, которые запускает каждый тестовый класс.
PHP:
$this->seed(TestCheckPermissionSeeder::class);
Где разместить этот вызов, чтобы он запустился 1 раз, перед запуском теста Также нужно очищать таблицы один раз, перед запуском класса Test*.php.
PHP:
DB($table)->delete
Где нужно размещать код, чтобы он запускался один раз, когда начали тестировать класс?

2. Знаю о существовании трейта RefreshDatabase, но как настроить чтобы он запускал миграции для тестов, а не для рабочего проекта. Как разделить миграции тестовые и не тестовые?

3. Теперь TestCheckPermissionSeeder. Я его разместил в \Tests\Unit\DatabaseSeeds, и запускаю из тестов.
PHP:
$this->seed(TestCheckPermissionSeeder::class);
Сделал так, потому что если разместить его в \App\Database\Seeds, то он выполнится в рабочем пространстве, а не в тестовом. Опять же вопрос, как разделить Seeder(ы) для тестов и для рабочего проекта? Тестовая база настроена, все работает.

Получилось сумбурно, но надеюсь основная мысль ясна.
 

флоппик

promotor fidei
Команда форума
Партнер клуба
Правильно конечно, не покрывать юнит-тестами работу с бд, и уж тем более, миграции. Эквалиентом сидов для тестов в ларавеле выступают Model factory и Faker
 
Сверху