burriko/cake-faker

CakePHP 固定数据插件,使用 Faker。

dev-master / 2.0.x-dev 2015-08-19 14:41 UTC

This package is not auto-updated.

Last update: 2024-09-28 13:40:47 UTC


README

这是一个使用 Faker 生成固定数据的 Hacky CakePHP 插件。它扩展了 Cake 的固定数据类,用于模式生成,但允许使用 Faker 来生成记录。

工作正在进行中,可能存在风险,自行承担,等等。

安装

依赖于 Composer 来安装和自动加载 Faker。只需将以下内容添加到 composer.json 的 require 块中。

	"burriko/cake-faker": "2.0.*@dev"

配置

  1. 将以下行添加到 app/Config/bootstrap.php 中。

     CakePlugin::load('CakeFaker');
    
  2. 您需要将固定数据更改为扩展 FakerTestFixture 而不是 CakeTestFixture。因此,固定数据文件的开始应类似于以下内容。

     <?php
     App::uses('FakerTestFixture', 'CakeFaker.Lib');
    
     class UserFixture extends FakerTestFixture
    
  3. 任何测试用例都需要扩展 FakerTestCase 而不是 CakeTestCase。如果您正在覆盖测试用例中的 setUp() 方法,请确保调用 parent::setUp()。因此,测试用例文件的开始应类似于以下内容。

     <?php
     App::uses('FakerTestCase', 'CakeFaker.Lib');
    
     class UserTest extends FakerTestCase
    
  4. 如果您希望 Faker 每次运行时生成相同的固定数据,则需要提供种子。将类似以下的行添加到 Config/core.php 或类似的配置文件中。

     Configure::write('faker.seed', 8468155468);
    

使用方法

这通常与 Cake 的固定数据的使用方式完全相同,只是您不是指定记录,而是告诉 Faker 生成多少条记录。

以下是一个生成 5 条用户模型记录的示例,从开发数据库导入模式。

	<?php
	App::uses('FakerTestFixture', 'CakeFaker.Lib');

	class UserFixture extends FakerTestFixture
	{
		public $import = array('model' => 'User', 'connection' => 'development');

		protected
			$model_name = 'User',
			$num_records = 5;

		protected function alterFields($generator)
		{
			return array(
				'username' => function() use ($generator) { return $generator->bothify('n??##'); },
				'name'     => function() use ($generator) { return $generator->name; },
				'level'    => function() use ($generator) { return $generator->randomNumber(0, 1); }
			);
		}
	}

可以使用 alterFields() 方法指定 Faker 无法猜测的字段列类型。它与此部分 Faker 文档中 addEntity() 的第三个参数的使用方式完全相同。 https://github.com/fzaninotto/Faker#populating-entities-using-an-orm-or-an-odm

如果您有相关模型并且希望生成的记录通过外键链接,那么 Faker 将会处理这一点。只需确保按逻辑顺序排列固定数据,例如,如果用户有多个帖子,请确保在测试用例中用户固定数据在帖子固定数据之前,因为帖子固定数据需要使用用户 ID。