你如何使用Factory Girl参考工厂内的课程?

时间:2014-05-08 17:55:54

标签: ruby factory-bot

我想在工厂创建期间引用工厂代表的类。这可能吗?

这就是我现在正在做的事情:

factory :foo do # Foo class
  name "Foo"
  ...
  initialize_with { Foo.some_complicated_method(attributes) }

  factory :bar_foo do
    name "Bar"
    initialize_with { BarFoo.some_complicated_method(attributes) }
  end
end

我想要做的是引用类名,这样我可以这样做(用适当的方法调用替换__factory_class__):

factory :foo do
  name "Foo"
  ...
  initialize_with { __factory_class__.some_complicated_method(attributes) }

  factory :bar_foo do # Runs initialize_with using BarFoo instead of Foo
    name "Bar"
  end
end

我想要的是什么?请注意,BarFooFoo的子类。

1 个答案:

答案 0 :(得分:4)

这是不可能的。它在Custom Construction部分的FactoryGirl的入门文档中有所描述:

  

使用initialize_with时,您在调用new时不必自行声明该类;但是,您要调用的任何其他类方法都必须在类中明确调用。