Всем привет, есть пакет который необходимо покрыть тестами. В каждом тесте подключен трейт для подключения пути миграций и сидеров.
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 уже есть. Как решить эту проблему?
Напомню что это сделано для того, чтобы при запуске тестов было видно сидеры и миграции внутри пакета.