lucaszz / 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(); }