モデルの工場モックにインターフェイスまたは契約を課す最もララベルな方法は何ですか?Laravelのモデル契約/インタフェース5
たとえば、モデルがDog
であるとします。私はそれを模擬するために工場を使い、私はそれのためのテストを書く。私は契約/インタフェースに準拠していないインスタンスを模倣すると、エラーがスローされることを確認したい。
\アプリケーション\ Dog.php:私はこのテストを実行/ DogTest.php
class RoadshowUnitTest extends TestCase
{
/** @test **/
public function i_should_be_able_to_make_a_dog()
{
$dog = factory(App\Roadshow::class, 1)->make();
// ... internal type assertions go here
}
}
class Dog extends Model
{
protected $table = 'dogs';
protected $fillable = ['name', 'breed' ]; // Dogs must have both of these
}
データベース/工場/ ModelFactory.php
$factory->define(App\User::class, function (Faker\Generator $faker) {
return [
'name' => $faker->name // no mention of breed, which is required
];
});
テスト、私はいくつかの種類のエラーを取得する必要があります。工場では重要なフィールドがないため、Dog
をまったく生産できません。どのようにしてモデルに要件を課すのですか、それを使用するものはどれですか(工場のように)?
「必須」と言えば、どういう意味ですか?データベース制約、コントローラでの検証など? – jackel414
@ jackel414「必要な」レベルが異なる場合、「犬」(工場のような)のインスタンスなしでプロパティとして「繁殖」を登録するために必要なものは存在できません。インスタンスを作成するために、つまり言い換えれば必要です。 –