[英]One-To-Many relationships with FactoryMuffin in php?
我試圖使用FactoryMuffin(類似於FactoryGirl的php工廠庫)為集成測試生成測試數據。
在我的應用程序中,一個Person
可以有許多Emails
和許多Tokens
。 我想產生一個Person
有五個Emails
和一個Token
在我的工廠,並寫它周圍的一些測試。
目前,我正在這樣定義我的工廠:
FactoryMuffin::define('Person')->setDefinitions([
'id' => Faker::numberBetween(123456789, 987654321),
'name' => Faker::name()
]);
FactoryMuffin::define('Email')->setDefinitions([
'id' => Faker::numberBetween(123456789, 987654321),
'address' => Faker::email(),
'person_id' => 'factory|Person',
]);
FactoryMuffin::define('Token')->setDefinitions([
'token' => Faker::numberBetween(1234567891234, 9876543211234),
'person_id' => 'factory|Person',
]);
我的問題是,當我創建一個Person
,它不會創建任何關聯的Email
或Token
。 創建Token
,它會自動創建一個Person
,但不會創建關聯的Email
。
我該如何處理?
根據Factory Muffin的工作方式,您無需創建人員。 您可以簡單地創建電子郵件並訪問創建電子郵件的人(相反)。 在下面的示例中,我們創建一個消息,然后訪問該消息為我們創建的用戶。
考慮他們的文檔中的這個例子。
$message = FactoryMuffin::create('Message');
$this->assertInstanceOf('Message', $message);
$this->assertInstanceOf('User', $message->user);
對於您的情況,您可以創建Email
並按如下方式訪問此Person
$email = FactoryMuffin::create('Email');
$emailPerson = $email->person;
您甚至可以走得更遠,像這樣為同一個人創建100封電子郵件和50個令牌
$person = FactoryMuffin::create('Person');
$emails = FactoryMuffin::seed(100, 'Email', ['person_id' => $person->id]);
$tokens = FactoryMuffin::seed(50, 'Token', ['person_id' => $person->id]);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.