maymeow/cakephp-testing

MayMeow/Testing插件用于CakePHP

安装次数: 1

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 3

分支: 0

开放问题: 0

类型:cakephp-plugin

v1.0 2019-10-06 08:06 UTC

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

贡献

  1. Fork它!
  2. 创建您的功能分支:git checkout -b my-new-feature
  3. 提交您的更改:git commit -am '添加一些功能'
  4. 推送到分支:git push origin my-new-feature
  5. 提交拉取请求 :D

许可证

MIT

支持

您可以在我的 patreon 上支持我