定制 mongator/factory 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

mongator/factory

Composer 安装命令:

composer require mongator/factory

包简介

README 文档

README

Mongator Factory is an alternative to using database fixtures in your PHP unit tests. Instead of maintaining separate files of data, you define a blueprint for each table and then create as many different objects as you need in your PHP code.

By using a database factory instead of fixtures, your unit tests will be clearer and easier to write. You’ll also be able to change the objects you create programmatically instead of being stuck with the same old fixtures.

Mongator Factory will read the Mondator configClass definitions and make a default for every field. If you are using symfony/validator you will also get the mandatory fields of your classes.

Mongator Factory is heavily inspired by phactory.

Requirements

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

Installation

The recommended way of installing Mongator Factory is through composer. You can see package information on Packagist.

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

Usage

You can use Mongator Factory with PHPUnit, SimpleTest, or any other PHP unit test framework.

After giving Mongator Factory a mongator instance and a faker instance (faker will generate random string and numbers) you’ll define a blueprint for each model you want to create documents in. The blueprint provides default values for some or all of the columns in that collection. You can then create one or more document in that collection, and optionally override the default values for each one.

Instanciate a MandangoFactory in your setUp method at TestCase and a recall in your tearDown method if you want delete all documents after every test.

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

On your test cases, just define a new fixture so you can create all the documents you need

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

And maybe with some default values

$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');

Or the quick way

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

Tests

Tests are in the tests folder. To run them, you need PHPUnit. Example:

$ phpunit --configuration phpunit.xml.dist

License

MIT, see LICENSE

统计信息

  • 总下载量: 1.85k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 3
  • 点击次数: 1
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 3
  • Watchers: 2
  • Forks: 4
  • 开发语言: PHP

其他信息

  • 授权协议: Unknown
  • 更新时间: 2013-05-08

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固