2016-05-31 35 views
1

我有一個正規的User模型。當我使用它時,系統工作正常。但是現在我正在嘗試在與Laravel集成的PHPUnit中創建單元測試。Laravel型號工廠ID沒有設置

我有一個工廠,創建一個用戶:

$factory->define(App\User::class, function (Faker\Generator $faker) { 
    return [ 
     'id' => $faker->randomNumber(9), 
     'email' => $faker->safeEmail, 
     'first_name' => $faker->firstNameMale, 
     'last_name' => $faker->lastName, 
     'password' => bcrypt(str_random(10)), 
     'remember_token' => str_random(10), 
    ]; 
}); 

我改變用戶到具有整數ID作爲主鍵,但它沒有定義爲自動遞增。 所以工廠爲ID創建隨機數。

而且我已經創建了簡單的測試:

public function test_id_is_visible() { 
    $user = factory(App\User::class)->create(); 

    $this->actingAs($user); 
    $this->visit('/userprofile'); 
    $this->see($user->id); 
} 

該測試總是失敗,但它似乎是確定,當我手動導航到該頁面。

我注意到在測試中$user->id總是0.即使它在工廠中也不能爲0。我檢查和Laravel插入用戶正確的數據庫,它有正確的 ID,但在代碼中我總是得到0.

我該怎麼做才能獲得正確的ID值?

編輯 現在我明白,如果我改變$user = factory(App\User::class)->create();$user = factory(App\User::class)->make();用戶實例持有一個正確的ID。但爲什麼創建清除ID?

回答