我是Rails测试的新手,我很难测试我的关联。我想简单地为已确认用户提供工厂,这些用户具有我可以在我的规范中创建的各种角色。我希望能够user = create(:user_superadmin)
或user = create(:user_accountadmin)
,但我很难这样做。
以下是我在运行规范时遇到的错误:
Failure/Error: user = create(:user_superadmin)
NoMethodError:
undefined method `name' for :user_superadmin:Symbol
请参阅下面的代码:
工厂/ role.rb
FactoryGirl.define do
factory :role_superadmin, class: Role do
name 'SuperAdmin'
description 'Lorem ipsum...'
end
end
工厂/ user.rb
FactoryGirl.define do
factory :user do
email { Faker::Internet.email }
password { Faker::Internet.password(8) }
password_confirmation { password }
factory :confirmed_user do
confirmed_at Time.zone.now
factory :user_superadmin do
association :role, factory: role_superadmin
end
end
end
end
规范
it 'should be a superadmin user' do
user = create(:user_superadmin)
expect(user.super_admin?).to be_truthy
end
非常感谢任何帮助。
答案 0 :(得分:1)
在您对user_superadmin的定义中,请尝试以下关联:
association :role, factory: :role_superadmin
请注意:role_superadmin也必须是符号,因此FactoryGirl可以找到合适的工厂。