У меня есть приложение Symfony 4 и Doctrine с миграциями Doctrine.Я представляю Codeception для запуска тестов API, и мне нужно запустить миграцию до запуска тестов.Поскольку я использую модуль Doctrine2 , я не хочу также включать модуль DB , так как он не нужен для тестов и потребует настройки тестовой базы данных в двух разныхместоположения.
В настоящее время я использую модуль Symfony , и я заметил, что у модуля Laravel есть опция конфигурации run_database_migrations
.
Как лучше всего выполнить команду переноса Doctrine в приложении Symfony перед тестами?(bin/console doctrine:migrations:migrate -n
- это конкретная команда).
Редактировать У меня есть решение, которое, хотя и работает, далеко не идеально.Используя Codeception Customization , я создал следующее расширение, которое, в основном, вручную exec
s базовых команд Symfony.
class DatabaseMigrationExtension extends Extension
{
public static $events = [
Events::SUITE_BEFORE => 'beforeSuite',
];
public function beforeSuite(SuiteEvent $e)
{
echo(exec('bin/console doctrine:database:drop --force') . PHP_EOL);
echo(exec('bin/console doctrine:database:create') . PHP_EOL);
echo(exec('bin/console doctrine:migrations:migrate -n') . PHP_EOL);
}
}
Edit 2 TheЦель этого состоит в основном в том, чтобы реплицировать аналогичную функциональность тому, что делает модуль DB Codeception, что позволяет вам предоставлять дамп SQL базы данных, который он автоматически использует в тестах, но вместо этого использовать миграции Doctrine для обработки базы данных.- https://codeception.com/docs/modules/Db#sql-data-dump