簡體   English   中英

與php中的FactoryMuffin一對多關系?

[英]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 ,它不會創建任何關聯的EmailToken 創建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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM