2016-05-31 101 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?

回答