Rspec 继承工厂的FactoryGirl关联

Rspec 继承工厂的FactoryGirl关联,rspec,ruby-on-rails-5,factory-bot,Rspec,Ruby On Rails 5,Factory Bot,我是Rails测试新手,在测试我的关联时遇到了很大的困难。我只想为我可以在规范中创建的具有各种角色的确认用户创建工厂。我只想拥有user=create(:user\u superadmin)或user=create(:user\u accountadmin)的能力,但我很难做到这一点 以下是我在运行规范时遇到的错误: Failure/Error: user = create(:user_superadmin) NoMethodError: undefined metho

我是Rails测试新手,在测试我的关联时遇到了很大的困难。我只想为我可以在规范中创建的具有各种角色的确认用户创建工厂。我只想拥有
user=create(:user\u superadmin)
user=create(:user\u accountadmin)
的能力,但我很难做到这一点

以下是我在运行规范时遇到的错误:

Failure/Error: user = create(:user_superadmin)

     NoMethodError:
       undefined method `name' for :user_superadmin:Symbol
请参阅下面我的代码:

工厂/角色.rb

FactoryGirl.define do
  factory :role_superadmin, class: Role do
    name 'SuperAdmin'
    description 'Lorem ipsum...'
  end
end
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
工厂/用户.rb

FactoryGirl.define do
  factory :role_superadmin, class: Role do
    name 'SuperAdmin'
    description 'Lorem ipsum...'
  end
end
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\u superadmin的定义中,请尝试以下关联:

关联:角色,工厂::角色\u超级管理员


请注意:角色超级管理员也必须是一个符号,以便FactoryGirl可以找到合适的工厂。

没问题。当我开始与FactoryGirl合作时,我发现Arjan van der Gaag提供的这组技巧非常有用: