2017-03-27 16 views
1

UserモデルとUserLevelモデルで以下の関係があります。laravelテストでの雄弁な関係にアクセスできない

ユーザー:

public function user_level() 
{ 
    return $this->belongsTo('App\UserLevel'); 
} 

ユーザレベル:

public function users() 
{ 
    return $this->hasMany('App\User'); 
} 

以下に示すようにこれはティンカーで完璧に動作します:

enter image description here

をしかし、私は関係へのアクセスに見えることはできませんLaravel PHPUnitテストで。次die and dump戻りnull

class AddUserTest extends TestCase 
{ 
    use DatabaseMigrations; 

    /** @test */ 
    public function super_admin_can_view_add_user_form() 
    { 
    $super_admin_user = factory(User::class)->create([ 
     'username' => 'Test User 6', 
     'user_level_id' => 7, 
    ]); 

    dd($super_admin_user->user_level); 
    } 
} 

私は$super_admin_userdd場合は、それが適切に作成したユーザーを示しています。私は間違って何をしていますか?テストでuser_levelにアクセスするにはどうすればよいですか?

答えて

0

私は仮定することができ、あなたはまた、関連するモデルを作成するので、あなたのテストで使用する場合は、あなたのモデル工場にその:

$super_admin_user = factory(User::class)->create([ 
     'username' => 'Test User 6', 
     'user_level_id' => 7, 
    ]); 

、それが原因で動作しません。

$user_level = factory(UserLevel::class)->create(); 
$super_admin_user = factory(User::class)->create([ 
     'username' => 'Test User 6', 
     'user_level_id' => $user_level->id, 
    ]); 

または完全にテストからuser_level_idを削除します:(これはあなたがいじくり回すに使用するものです)

$super_admin_user = factory(User::class)->create([ 
    'username' => 'Test User 6', 
]); 

をID 7とはユーザレベルですから、どちらか例えば、あなたのテストで1を作成する必要はありません

参考:https://laravel.com/docs/5.4/database-testing#writing-factories - セクション関係&属性は

を閉鎖します