工厂女孩/ Rspec模型测试的特定协会

时间:2015-02-25 21:53:21

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

我想在spec / models / user_role.spec中执行此操作:

role_trainer = FactoryGirl.create(:role_trainer)
user_role = FactoryGirl.build(:user_role, :role => role_trainer)

我要指定具体的" role_trainer"在spec / factories / roles.rb中:

factory :role_trainer, parent: :role do |f|
  f.name "trainer"
end

然后对于spec / factories / role_spec.rb,我有:

FactoryGirl.define do
  factory :user_role do
    user
    role
  end
end

,模型是:

class Role < ActiveRecord::Base
  has_many :user_roles, :dependent => :destroy
  has_many :users, :through => :user_roles

class UserRole < ActiveRecord::Base
  belongs_to :user
  belongs_to :role

就是说,用语言来说,我想确定&#34;角色&#34; &#34;用户角色&#34;那将是创造的。 但是,当我这样做时,我没有发现&#34; role_trainer&#34;用作user_role的角色。 (相反,user_role由构建语句(在顶部)创建,与#34;培训师&#34;无关。)我的设置有什么问题?

另一种提问方式 - 我需要通过创建多个user_roles为单个用户添加多个角色。如何指定FactoryGirl构建的输入用户?

1 个答案:

答案 0 :(得分:0)

我会做这样的事情:

FactoryGirl.define do
    factory :role_trainer do
        name 'Trainer'
    end
end

这应该可以解决问题。