【问题标题】:Factory Girl Newbie: Calling (not creating) an existing factory as an associationFactory Girl Newbie:将现有工厂称为(而不是创建)一个协会
【发布时间】:2011-01-06 14:25:35
【问题描述】:

我有一些工厂女工厂,它们与其他工厂有关联。例如:

FactoryGirl.define do
  factory :user do |f|
    f.sequence(:email) { |n| "user#{n}@example.com" }
    f.password "foobar"
    f.password_confirmation { |u| u.password }
    f.role_id 2
    f.association :role, :factory => :role
  end
end

问题是如果我调用 Factory(:user) 两次,我会得到一个重复错误(role.name 列上有唯一性约束)

所以问题是:如果不存在,我如何指定上面应该创建 :role 工厂,但如果不存在则使用现​​有的工厂?

【问题讨论】:

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


    【解决方案1】:

    为什么不对工厂角色名称使用序列。例如 定义角色名称的顺序,如

    FactoryGirl.sequence :role_name do |n|
        "role#{n}"
      end
    

    并像在

    中一样定义工厂角色
      factory.role do |role|
         f.name Factory.next :role_name
      end
    

    通过这样做,每次都会创建一个新角色,但使用不同的角色名称。您可以通过在每个测试中创建角色来将角色传递给 Factory.build。但我觉得这很麻烦。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多