0

我有一个非常简单的模型。一个用户有一个 role_id,它依赖于一个角色表(id,name)和一个角色引用。

我想用工厂女孩在我的 rspec 测试中创建任何类型的用户。

我的第一个想法是这样的

factory :role do
  name "guest"
  factory :role_admin do
    name "admin"
  end
  factory :role_supervisor do
    name "supervisor"
  end
  etc... I have a lot a different roles
end



factory :user do
  email
  password '123456'
  password_confirmation '123456'
  association :role, factory: :role

  factory :admin do
    association :role, factory: :role_admin
  end
  factory :supervisor do
    association :role, factory: :role_supervisor
  end
  etc... I have a lot a different roles
end

在我的模型中,我有一个简单的方法:

def is(role_name) 
  return self.role.name == role_name
end

这是正确的做法吗?我真的需要为这个角色创建一个工厂吗?我可以为每个角色的工厂女孩​​中的这个功能制作一个存根吗?

我对所有这些测试内容都很陌生,谢谢。

4

1 回答 1

0

工厂应该反映您的模型。

class User
  has_many :products
end

class Product
  belongs_to :user
end

factory :user do
  products
end

factory :product do
end

如果您想有特殊情况(了解您的案例中的角色),您可以定义traits

factory :user do

  traits :admin do
  end

  factory :admin_user, traits: [:admin]

end

更多关于特质的信息在这里

于 2013-08-23T16:58:43.370 回答