dmirogin/fakemodel

此包已被废弃,不再维护。未建议替代包。

为使用和持久化模型的Yii2项目提供的测试辅助工具

安装: 267

依赖: 0

建议者: 0

安全性: 0

星级: 29

关注者: 4

分支: 5

开放问题: 1

类型:yii2-extension

v0.1.0 2017-12-17 20:26 UTC

This package is not auto-updated.

Last update: 2024-04-10 09:00:38 UTC


README

Build Status Latest Stable Version GitHub license

此包可以帮助您管理模拟模型。创建、存储到数据库中。此工厂是处理测试数据集的另一种方法,灵感来自laravel中的工厂。

需求

  • PHP 7.0 +

安装

composer require dmirogin/fakemodel

如何使用

  1. 将组件添加到您的应用程序配置中

    'factory' => [
        'class' => \dmirogin\fakemodel\ModelFactory::class,
        'resolvers' => [
            [
                'class' => \dmirogin\fakemodel\resolvers\FakerResolver::class,
                'definitions' => [
                    \app\models\MyModel::class => function (\Faker\Generator $faker) {
                        return [
                            'id' => $faker->numberBetween(1, 100),
                            'username' => $faker->userName,
                            'password' => $faker->password
                        ];
                    }
                ]
            ]
        ]
    ],
  2. 现在您可以这样做

Yii::$app->factory->setModel(\app\models\MyModel::class)->make();

基础TestCase中的函数

在您的基础TestCase类中,您可以创建简单的函数

/**
 * Create model factory
 *
 * @param string $model
 * @param int $amount
 * @return \dmirogin\fakemodel\ModelFactory
 */
protected function factory(string $model, int $amount = 1): \dmirogin\fakemodel\ModelFactory
{
    /** @var \dmirogin\fakemodel\ModelFactory $factory */
    $factory = Yii::$app->factory;
    return $factory->setModel($model)->setAmount($amount);
}

并通过以下方式调用它

$this->factory(\app\models\MyModel::class)->make();

增强示例

'factory' => [
    'class' => \dmirogin\fakemodel\ModelFactory::class,
    'resolvers' => [
        [
            'class' => \dmirogin\fakemodel\resolvers\FakerResolver::class,
            'definitions' => [
                \app\models\MyModel::class => function (\Faker\Generator $faker) {
                    return [
                        'id' => $faker->numberBetween(1, 100),
                        'username' => $faker->userName,
                        'password' => $faker->password
                    ];
                }
            ]
        ],
        [
            'class' => \dmirogin\fakemodel\resolvers\StatesResolver::class,
            'definitions' => [
                \app\models\MyModel::class => [
                    'admin' => [
                        'id' => 1
                    ]
                ]
            ]
        ]
    ]
],

Yii::$app->factory->setModel(\app\models\MyModel::class)->states(['admin'])->setAmount(5)->make();

更多信息请参考 维基百科