我正努力养成在我去的时候写测试的习惯。 我正在使用Laravel 4.2构建一个注册用户的应用程序,并为不同的用户类型分配不同的角色。
我想编写一个测试,检查用户是否有角色。我使用Entrust来管理我的角色/权限和Laracasts / TestDummy来生成虚拟对象。 角色存储在数据透视表中,所以我基本上测试了多对多关系的存在 TestDummy文档声明我需要在fixtures.yml文件中定义我的对象及其关系并给出一个示例
Post:
title: Hello World $string
body: $text
published_at: $date
author_id:
type: Author
Author:
name: John Doe $integer
上述布局定义了一对一的关系。帖子有一个作者。 我要测试的是用户有角色,许多用户可以拥有多个角色
我想知道如何在我的fixtures.yml文件中定义它 在我的脑海里
如果我想测试多对多关系(许多用户有很多角色),我可以这样引用吗?
Excel\Users\User:
username: $string$integer
email: $string$integer@example.com
password: $string
created_at: $date
updated_at: $date
\Role:
name: $string
created_at: $date
updated_at: $date
Assigned_Role:
user_id:
type: Excel\Users\User
role_id:
type: \Role
我看到的问题是Assigned_Role没有模型,因为它只是一个数据透视表
如何测试用户是否具有特定角色?
答案 0 :(得分:2)
TestDummy仅支持生成属于关系。假设你想在User
hasRole($role)
上测试方法,你可以尝试这样的事情。
$user = Factory::create('Excel\Users\User');
$role = Factory::create('Role');
$user->roles()->attach($role);
$this->assertTrue($user->hasRole($role));
$user->roles()->detach($role);
$this->assertFalse($user->hasRole($role));