5
私は文書化さhereLaravel 5.3コール雄弁ファクトリー::状態()
$factory->define(App\User::class, function(\Faker\Generator $faker) {
return [
'name' => $faker->name,
'email' => $faker->unique()->safeEmail,
'remember_token' => str_random(10),
'phone' => $faker->phoneNumber,
];
});
$factory->state(App\User::class, 'admin', function (Faker\Generator $faker) {
return [
'groups' => function(App\User $u) {
return App\Models\Group::where('level', '<=', 5)->get()->toArray();
}
];
});
としてLaravels ModelFactoryを使用して、テスト用のUserモデルのいくつかの異なるバリエーションを定義しようとしています
そして、私はUserモデルを作成:
$user = factory(User::class)->states('admin')->make();
しかし、PHPUnitは文句なしにテストの外に出るようです。 PHPのログでは、私は、以下を参照してください。
Call to undefined method Illuminate\Database\Eloquent\Factory::state()
あり状態()メソッドに非常に多くのドキュメントはLaravelのドキュメントにはない、と私はそれを示すために進展なしとの時間を検索し、実験してきました。
傍注として、groups
属性はMany関係を参照しています。しかし、この例外は、私が作成しているモデル、単純なモデルであってもスローされます。
Illuminate \ Database \ Eloquent \ FactoryとFactoryBuilderのクラスを掘り下げた後、最新のLaravelブランチのgithubに比べて、state()メソッドとstates()メソッドが両方とも不足していることがわかりました。 'composer update'を実行した後、Laravel Framework v5.3.18に更新されました。そして、ModelFactoryの状態は期待通りに機能します。 –
ご協力いただきありがとうございます。あなた自身の質問に答えることをお勧めします。 – whoan