我有一个真正简单的模型。用户拥有一个role_id,它取决于角色表(id,name)和角色引用。
我希望在工厂女孩的rspec测试中创建任何类型的用户。
我的第一个想法是那样的
factory :role do
name "guest"
factory :role_admin do
name "admin"
end
factory :role_supervisor do
name "supervisor"
end
etc... I have a lot a different roles
end
factory :user do
email
password '123456'
password_confirmation '123456'
association :role, factory: :role
factory :admin do
association :role, factory: :role_admin
end
factory :supervisor do
association :role, factory: :role_supervisor
end
etc... I have a lot a different roles
end
在我的模型中,我有一个简单的方法:
def is(role_name)
return self.role.name == role_name
end
这是正确的做法吗?我真的需要为这个角色创建一个工厂吗? 我可以为每个角色在工厂女孩中为这个功能制作一个存根吗?
对于所有测试内容我真的很新,谢谢。
答案 0 :(得分:0)
工厂应该反映你的模型。
class User
has_many :products
end
class Product
belongs_to :user
end
factory :user do
products
end
factory :product do
end
如果您想要特殊情况(了解您的情况中的角色),您可以定义traits
:
factory :user do
traits :admin do
end
factory :admin_user, traits: [:admin]
end
有关特征here的更多信息。