lzakrzewski/doctrine-database-backup

Doctrine数据库备份

1.2.3 2016-10-24 16:24 UTC

This package is not auto-updated.

Last update: 2024-09-24 21:06:09 UTC


README

Build Status Latest Stable Version Total Downloads Coverage Status

DoctrineDatabaseBackup是一个简化应用测试速度的库。它可以用于命令行运行的PHPUnit或Behat测试。我的目标是避免在每个测试中浪费时间去删除/创建或清理数据库,因此我对其进行了优化。

此库将数据库内容放入内存,并在每个测试之间共享。

注意:我不建议与大型数据集一起使用此库,因为它可能导致巨大的内存使用。我更喜欢使用最小数据库设置来运行测试,因为它对我来说更易于阅读,并且性能更好。

需求

  "require": {
    "php": ">=5.4",
    "doctrine/orm": "~2.3",
    "symfony/process": "~2.3"
  },

特性

  • 它支持SqlitePlatformMySqlPlatform
  • 它可以创建每个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();
}