mongator / factory
Requires
- php: >=5.3.0
- ext-mongo: *
- fzaninotto/faker: 1.1.*@dev
- mongator/mongator: >=1.2.0
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