lucaszz/doctrine-database-backup

Doctrine 数据库备份

1.2.3 2016-10-24 16:24 UTC

This package is not auto-updated.

Last update: 2024-09-24 04:25:18 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();
}