我有一个Symfony 4应用程序,使用Doctrine和Doctrine migrations。我正在引入Codeception来运行API测试,并且需要在测试运行之前运行迁移。由于我正在使用Doctrine2模块,因此我不希望同时包含DB模块,因为它对测试没有必要,并且需要在两个不同的位置配置测试数据库。
我目前正在使用Symfony模块,我注意到Laravel模块具有run_database_migrations
配置选项。
在测试前运行Symfony应用程序中的Doctrine migrations命令的最佳方法是什么?(bin/console doctrine:migrations:migrate -n
是特定命令)。
编辑 我已经找到了解决方案,虽然它可以工作,但远非理想。通过使用Codeception定制,我创建了以下扩展名,基本上手动执行底层的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);
}
}
编辑2,基本目标就是复制Codeception DB模块类似的功能,它允许您提供数据库的SQL转储文件以在测试中自动使用,但改用Doctrine迁移来处理DB。- https://codeception.com/docs/modules/Db#sql-data-dump
--env=test
? - Starwave