FactoryGirl协会来自继承工厂

时间:2017-05-24 15:36:51

标签: rspec ruby-on-rails-5 factory-bot

我是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

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

在您对user_superadmin的定义中,请尝试以下关联:

association :role, factory: :role_superadmin

请注意:role_superadmin也必须是符号,因此FactoryGirl可以找到合适的工厂。