FactoryGirl:使用私有 class 方法为模型创建工厂 new

FactoryGirl: create factories for model with private class method new

我使用带有工厂方法的非 AR 模型。

class MyModel
  include ActiveAttr::Model

  attribute :data
  attribute :frequency

  def self.process_data
    # ...
    new(data: 'foo', frequency: 1) # e. g.
  end
  private_class_method :new
end

cource 的默认工厂调用会抛出错误:为 MyModel 调用了私有方法“new”是否有任何特殊的工厂选项可以设置以忽略此错误错误?

查看initialize_with

class A
  class << self
    private :new
  end
end

FactoryGirl.define do
  factory :a do
    initialize_with { A.send :new }
  end
end

FactoryGirl.build :a
#<C:0x007ff1219f0190>