@Tokenchik

Как при разработке пакета подключить тестовые данные для каждого теста?

Всем привет, есть пакет который необходимо покрыть тестами. В каждом тесте подключен трейт для подключения пути миграций и сидеров.
trait Setup {

    use WithLoadMigrationsFrom;

    protected $connectionsToTransact = ['testing'];

    protected function setUp(): void
    {
        parent::setUp();

        $this->loadMigrationsFrom(realpath(__DIR__ . '/../database/migrations'));
        $this->registerSeedsFrom(__DIR__ . '/../database/seeds');
        $this->artisan('migrate', [
            '--path' => realpath(__DIR__ . '/../database/migrations'),
            '--realpath' => true,
            '--database' => 'testing'
        ]);
        $this->artisan('db:seed --class=DatabaseSeeder', []);
    }

    /**
     * Register seeds.
     *
     * @param  string  $path
     * @return void
     */
    protected function registerSeedsFrom($path)
    {
        foreach (glob("$path/*.php") as $filename)
        {
            include $filename;
            $classes = get_declared_classes();
            $class = end($classes);

            $command = Request::server('argv', null);
            if (is_array($command)) {
                $command = implode(' ', $command);
                if ($command == "artisan db:seed") {
                    Artisan::call('db:seed', ['--class' => $class]);
                }
            }

        }
    }

    protected function tearDown(): void
    {
        Artisan::call('migrate:reset');
        parent::tearDown();
    }
}


В итоге сейчас есть два файла теста, при запуске тестов получаю ошибку
Fatal error: Cannot declare class DatabaseSeeder, because the name is already in use


В ошибке конечно явно написано что у меня класс DatabaseSeeder уже есть. Как решить эту проблему?
Напомню что это сделано для того, чтобы при запуске тестов было видно сидеры и миграции внутри пакета.
  • Вопрос задан
  • 28 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы