lzakrzewski / doctrine-database-backup
Doctrine数据库备份
1.2.3
2016-10-24 16:24 UTC
Requires
- php: >=5.4
- doctrine/orm: ~2.3
- symfony/process: ~2.3|~3.0
Requires (Dev)
- mikey179/vfsstream: ~1
- phpunit/phpunit: ~4.8
- satooshi/php-coveralls: ~1.0
README
DoctrineDatabaseBackup是一个简化应用测试速度的库。它可以用于命令行运行的PHPUnit或Behat测试。我的目标是避免在每个测试中浪费时间去删除/创建或清理数据库,因此我对其进行了优化。
此库将数据库内容放入内存,并在每个测试之间共享。
注意:我不建议与大型数据集一起使用此库,因为它可能导致巨大的内存使用。我更喜欢使用最小数据库设置来运行测试,因为它对我来说更易于阅读,并且性能更好。
需求
"require": { "php": ">=5.4", "doctrine/orm": "~2.3", "symfony/process": "~2.3" },
特性
- 它支持SqlitePlatform和MySqlPlatform,
- 它可以创建每个PHP进程的数据库备份,
- 它可以快速清除数据库,
- 它可以在每个测试前从备份中恢复数据库,
- 它可以在每个测试前恢复一个干净的数据库。
安装
使用composer安装此库
composer require lzakrzewski/doctrine-database-backup "~1.2"
基本用法(PHPUnit示例)
/** {@inheritdoc} */ protected function setUp() { parent::setUp(); $this->entityManager = $this->createEntityManager(); $backup = new DoctrineDatabaseBackup($this->entityManager); $backup->restore(); }
此数据库设置在每个测试之前准备一个干净的数据库。 完整示例。
高级用法(PHPUnit示例)
/** {@inheritdoc} */ protected function setUp() { parent::setUp(); $this->entityManager = $this->createEntityManager(); $backup = new DoctrineDatabaseBackup($this->entityManager); $backup->restore(function (EntityManager $entityManager) { //your fixtures $entityManager->persist(new TestProduct('Iron', 99)); $entityManager->flush(); }); }
此数据库设置在每个测试之前使用你的数据集设置数据库。 完整示例。
注意:在第一个PHP进程的测试之前应该创建数据库。
Behat示例
/** @BeforeScenario*/ public function restoreDatabase() { // "getEntityManager" is your own getter for EntityManager $backup = new DoctrineDatabaseBackup($this->getEntityManager()); $backup->restore(); }