maymeow / cakephp-testing
MayMeow/Testing插件用于CakePHP
v1.0
2019-10-06 08:06 UTC
Requires
- cakephp/cakephp: ^3.5
Requires (Dev)
- phpunit/phpunit: ^5.7.14|^6.0
This package is auto-updated.
Last update: 2024-09-07 18:55:50 UTC
README
用于简化CakePHP测试编写的插件。使用Faker创建测试数据,而不是加载TableRegistry并调用新实体和保存
安装
您可以使用 composer 将此插件安装到您的CakePHP应用程序中。
安装composer包的推荐方法是
composer require maymeow/cakephp-testing
并将它加载到您的项目中
如何使用它
首先,您需要为您的模型编写工厂。其骨架如下
<?php namespace Identity\Database\Factories; use Faker\Generator; use MayMeow\Testing\Factories\ModelFactory; use MayMeow\Testing\Factories\ModelFactoryInterface; class UserFactory implements ModelFactoryInterface { /** * @param array|null $data * @return \Cake\Datasource\EntityInterface|false */ public function get(array $data = null) { $factory = new ModelFactory($data); return $factory->define('Identity.Users', function (Generator $faker) { return [ // Your model data ]; }); } }
然后,您可以添加数据。目前工厂只支持从属关系。
// ... eturn $factory->define('Identity.Users', function (Generator $faker) use ($api_key_plain) { return [ 'email' => $faker->email, 'password' => (new \Cake\Auth\DefaultPasswordHasher())->hash('pa$$word'), // Belogs to delation can be added by calling another factory 'role_id' => function () { return (new RoleFactory())->get()->id; }, 'api_key_plain' => $api_key_plain, 'api_key' => (new \Cake\Auth\DefaultPasswordHasher())->hash($api_key_plain) ]; }); // ...
创建工厂后,您可以在测试中调用它们,例如在setUp
函数中。
$this->user = (new UserFactory())->get();
当您需要添加关系或只想更新工厂中的任何字段时,您可以按照以下方式操作
$this->post = (new PostFactory())->get(['address_id' => $address->id]);
关系
插件只支持创建BelongsTo
关系。因此,如果您需要创建关系User -> HasMany -> Posts
,您必须创建用户,然后创建具有该用户user_id
的多个帖子。
// EXAMPLE Create 10 posts for one user $this->user = (new UserFactory())->get(); for ($i=1; $i<=10; $i++) { (new PostFactory())->get(['user_id' => $this->user->id]); }
贡献
- Fork它!
- 创建您的功能分支:
git checkout -b my-new-feature
- 提交您的更改:
git commit -am '添加一些功能'
- 推送到分支:
git push origin my-new-feature
- 提交拉取请求 :D
许可证
MIT
支持
您可以在我的 patreon 上支持我