1
現在、私はTestクラスで多くの工場factory()
を使用していますが、テストメソッドでfactory(Something::class)
しか使用できないため、1に減らす方法はありますか?テスト中の工場を最小限に抑えますか?
理由私はいくつかの外部キーを渡す必要があるので、私は多くを使用しました。
だけ使用することができ、あなたのテストで$factory->define(Something::class, function ($faker) {
return [
'title' => $faker->title,
'content' => $faker->paragraph,
'provider_id' => function() {
return factory(Provider::class)->create()->id;
}
];
});
$factory->define(Provider::class, function ($faker) {
$user = factory(User:class)->create();
return [
'user_id' => $user->id,
'token_id' => function() {
return factory(Token::class)->create(['user_id' => $user->id])->id;
}
];
});
、その後: -
$something = factory(Something::class)->create();
は、ニーズに応じて、注意してください、それはいくつかの副作用を引き起こす可能性がありますが、このような構文を使用することができます
$user = factory(User::class)->create();
$token = factory(Token::class)->create([
'user_id' => $user->id,
]);
$provider = factory(Provider::class)->create([
'user_id' => $user->id,
'token_id' => $token->id,
]);
$something = factory(Something::class)->create([
'provider_id' => $provider->id,
]);
// Now test with $something
を、あなたは '$ user'かのいずれかを知っておく必要がありますか外部キー?それとも、 '$ something'で何かするのですか? – Jono20201
私は '$ user'を気にしません。すべての工場でfakerを使用します。 –
$ somethingで 'factory(Something :: class)'を使うだけです –