burriko / cake-faker
CakePHP 固定数据插件,使用 Faker。
Requires
- php: >=5.3.0
- composer/installers: *
- fzaninotto/faker: v1.4.0
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"
配置
-
将以下行添加到 app/Config/bootstrap.php 中。
CakePlugin::load('CakeFaker');
-
您需要将固定数据更改为扩展 FakerTestFixture 而不是 CakeTestFixture。因此,固定数据文件的开始应类似于以下内容。
<?php App::uses('FakerTestFixture', 'CakeFaker.Lib'); class UserFixture extends FakerTestFixture
-
任何测试用例都需要扩展 FakerTestCase 而不是 CakeTestCase。如果您正在覆盖测试用例中的 setUp() 方法,请确保调用 parent::setUp()。因此,测试用例文件的开始应类似于以下内容。
<?php App::uses('FakerTestCase', 'CakeFaker.Lib'); class UserTest extends FakerTestCase
-
如果您希望 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。