Для того, что вы хотите сделать, я обычно создаю собственный тестовый загрузчик, который запускает необходимые команды доктрины и выглядит примерно так:
# tests/bootstrap.php
<?php
if (isset($_ENV['BOOTSTRAP_RESET_DATABASE']) && $_ENV['BOOTSTRAP_RESET_DATABASE'] == true) {
echo "Resetting test database...";
passthru(sprintf(
'php "%s/../bin/console" doctrine:schema:drop --env=test --force --no-interaction',
__DIR__
));
passthru(sprintf(
'php "%s/../bin/console" doctrine:schema:update --env=test --force --no-interaction',
__DIR__
));
passthru(sprintf(
'php "%s/../bin/console" doctrine:fixtures:load --env=test --no-interaction',
__DIR__
));
echo " Done" . PHP_EOL . PHP_EOL;
}
require __DIR__.'/../vendor/autoload.php';
В моем phpunit.xml.dist
я добавил переменную env:
<env name="DATABASE_URL" value="sqlite:///%kernel.project_dir%/var/test.db"/>
<env name="BOOTSTRAP_RESET_DATABASE" value="1" />
Если вы хотите увидеть базовый пример, у меня есть демонстрационный проект Symfony 4, который использует его для настройки базы данных базовых тестов, которая используется функциональными тестами с использованием веб-теста.Вы можете найти его на GitHub: dbrumann / product-api