如何定义与继承用户模型工厂(how to define factories with a inher

2019-07-03 18:10发布

我得到了以下问题:在我的应用程序使用继承来定义我的用户模型:

class User
 include Mongoid::Document

 field :name...
 field :bla...
end


class CustomUser < User
 field :customuserfield...
end

我怎么能写工厂这一类hirachie在我的规格映射。 并跟上写有鸵鸟政策重复自己。

FactoryGirl.define do 
  factory :user do
    name  "name"
    bla "bla"

    factory :custom_user do
      customfield "customfield"
    end
  end
end

这对我来说doesn't的工作,因为类也是“用户”。 使用“用户”我得到一个无效的错误,因为customfields没有defiend这里。 是否有一个很好的做法,方式或方法器实现类似的东西。

Answer 1:

你可以试试这个:

factory :user do
  name  "name"
  bla "bla"
end

factory :custom_user, class: CustomUser, parent: :user do
  customfield "customfield"
end

欲了解更多信息: 继承 。



Answer 2:

只需添加类:CustomUser到:custom_user工厂。 这对我行得通。 当您在嵌套:用户这意味着父母是用户,但它更简单。

FactoryGirl.define do 
  factory :user do
    name  "name"
    bla "bla"

    factory :custom_user, class: CustomUser do
      customfield "customfield"
    end
  end
end


文章来源: how to define factories with a inheritance user model