mongator/factory

此包最新版本(v1.0.2)的许可证信息不可用。

v1.0.2 2014-03-06 14:57 UTC

This package is not auto-updated.

Last update: 2024-09-23 12:13:26 UTC


README

Mongator Factory 是在 PHP 单元测试中使用数据库固定数据的替代品。而不是维护单独的数据文件,您可以为每个表定义一个蓝图,然后在 PHP 代码中创建您需要的任意数量的不同对象。

使用数据库工厂而不是固定数据,您的单元测试将更清晰且更容易编写。您还可以通过编程方式更改创建的对象,而不是被相同的旧固定数据所束缚。

Mongator Factory 将读取 Mondator configClass 定义并为每个字段创建默认值。如果您使用 symfony/validator,您还将获得您类中必填的字段。

Mongator Factory 受 phactory 非常大。

要求

  • PHP 5.3.x;
  • mongator/mongator
  • fzaninotto/faker >= 1.1

安装

推荐通过 composer 安装 Mongator Factory。您可以在 Packagist 上查看包信息

{
    "require": {
        "mongator/factory": "dev-master"
    }
}

用法

您可以使用 Mongator Factory 与 PHPUnit、SimpleTest 或任何其他 PHP 单元测试框架。

在给 Mongator Factory 一个 mongator 实例和一个 faker 实例(faker 将生成随机字符串和数字)之后,您将定义您想要创建文档的每个模型的蓝图。蓝图为该集合中的某些或所有列提供默认值。然后您可以在该集合中创建一个或多个文档,并可选择覆盖每个文档的默认值。

在 TestCase 的 setUp 方法中实例化 MandangoFactory,并在 tearDown 方法中删除所有文档以进行测试。

class TestCase extends \PHPUnit_Framework_TestCase {
    protected $factory;

    protected function setUp() {
        $faker = Faker\Factory::create();
        $this->factory = new Mongator\Factory\Factory($mongator, $faker);
    }

    protected function tearDown() {
        $this->factory->recall();
    }
}

在您的测试用例中,只需定义一个新的固定数据,就可以创建您需要的所有文档

$this->factory->define('MyFixture', 'Model\Article');
$document = $this->factory->create('MyFixture');

并可能包含一些默认值

$this->factory->define('MyFixture', 'Model\Article', array(
    'points' => 2,
    'text' => 'faker::paragraph(2)',
    'line' => 'faker::name',
    'title' => 'text example %s',
    'updatedAt' => '1st May 2010, 01:30:00',
    'votes' => function () { return rand(200, 300); }
));
$document = $this->factory->create('Article');

或者快速方式

$document = $this->factory->quick('Model\Article');

测试

测试在 tests 文件夹中。要运行它们,您需要 PHPUnit。示例

$ phpunit --configuration phpunit.xml.dist

许可证

MIT,请参阅 LICENSE