【问题标题】:How can I make all factory girl factories available before evaluating them?如何在评估之前让所有工厂女孩工厂可用?
【发布时间】:2014-11-11 04:38:44
【问题描述】:

设置:

我们将每个工厂保存在一个单独的文件中,并将它们分组到目录中以匹配我们的模型目录结构。我们也使用 mongo,我们的许多关系都是embeded_in,而不是典型的has_manybelongs_to

问题:

当工厂需要引用另一个在 alpha 顺序中较晚的工厂时,工厂女孩会抛出 Factory not registered 错误。

示例:

# spec/factories/cat.rb
FactoryGirl.define do
  factory :cat do
    name 'fluffy'
    kittens [FactoryGirl.build(:kitten), FactoryGirl.build(:kitten)]
  end
end

# spec/factories/kitten.rb
FactoryGirl.define do
  factory :kitten do
    name 'mittens'
    age_in_months 2
  end
end

由于cat 工厂是在kitten 工厂女孩引发Factory not registered 错误之前加载的。

问题

如何强制工厂女孩遍历所有文件,只检查文件定义的工厂名称,而不关心它依赖的其他工厂?

是的,我知道我可以将kitten 工厂与cat 工厂放在同一个文件中,我也知道我可以将kitten.rb 重命名为a_kitten.rb 来解决这个问题。我宁愿不做任何一个。还有其他解决方案吗?

【问题讨论】:

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


    【解决方案1】:

    你试过了吗?

    # spec/factories/cat.rb
    FactoryGirl.define do
      factory :cat do
        name 'fluffy'
        kittens { [build(:kitten), build(:kitten)] }
      end
    end
    

    传递一个块而不是一个值会使其延迟评估。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多