继承工厂的FactoryGirl协会
FactoryGirl association from inherited factory
我是 Rails 中的测试新手,并且在测试我的关联时遇到很大困难。我只想为已确认的用户提供工厂,这些用户具有我可以在我的规范中创建的各种角色。我只想拥有 user = create(:user_superadmin)
或 user = create(:user_accountadmin)
的能力,但我很难做到。
以下是我在 运行 我的规格时遇到的错误:
Failure/Error: user = create(:user_superadmin)
NoMethodError:
undefined method `name' for :user_superadmin:Symbol
请看下面我的代码:
factories/role.rb
FactoryGirl.define do
factory :role_superadmin, class: Role do
name 'SuperAdmin'
description 'Lorem ipsum...'
end
end
factories/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
非常感谢任何帮助。
在您的定义中:user_superadmin,试试这个关联:
association :role, factory: :role_superadmin
注意 :role_superadmin 也必须是一个符号,这样 FactoryGirl 才能找到合适的工厂。
我是 Rails 中的测试新手,并且在测试我的关联时遇到很大困难。我只想为已确认的用户提供工厂,这些用户具有我可以在我的规范中创建的各种角色。我只想拥有 user = create(:user_superadmin)
或 user = create(:user_accountadmin)
的能力,但我很难做到。
以下是我在 运行 我的规格时遇到的错误:
Failure/Error: user = create(:user_superadmin)
NoMethodError:
undefined method `name' for :user_superadmin:Symbol
请看下面我的代码:
factories/role.rb
FactoryGirl.define do
factory :role_superadmin, class: Role do
name 'SuperAdmin'
description 'Lorem ipsum...'
end
end
factories/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
非常感谢任何帮助。
在您的定义中:user_superadmin,试试这个关联:
association :role, factory: :role_superadmin
注意 :role_superadmin 也必须是一个符号,这样 FactoryGirl 才能找到合适的工厂。