dmirogin / fakemodel
此包已被废弃,不再维护。未建议替代包。
为使用和持久化模型的Yii2项目提供的测试辅助工具
v0.1.0
2017-12-17 20:26 UTC
Requires
- php: >=7.1.0
- fzaninotto/faker: ^1.7.0
- yiisoft/yii2: 2.*
Requires (Dev)
- phpunit/phpunit: ^6.0
This package is not auto-updated.
Last update: 2024-04-10 09:00:38 UTC
README
此包可以帮助您管理模拟模型。创建、存储到数据库中。此工厂是处理测试数据集的另一种方法,灵感来自laravel中的工厂。
需求
- PHP 7.0 +
安装
composer require dmirogin/fakemodel
如何使用
-
将组件添加到您的应用程序配置中
'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 ]; } ] ] ] ],
-
现在您可以这样做
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();
更多信息请参考 维基百科。