모델의 공장 모의 작업에 인터페이스 또는 계약을 부과하는 가장 Laravel 방법은 무엇입니까?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 "필요하다"의 레벨이 다른 경우 '번식'을 '공장'처럼 '개'의 인스턴스없이 속성으로 등록하는 데 필요한 것은 존재할 수 없습니다. 인스턴스를 만드는 데 필요합니다. –