我有两家工厂:
factory :foo
factory :bar
A Foo has_one Bar。
foo.rb 有一个after_create回调来创建一个Bar对象。目前,我能够得到我需要的东西,但这是一个很小的例子:
let(:bar) { create(:foo).bar }
我想更直接地获取Bar对象,就像这样(这不起作用)......
factory :bar_from_foo_callback do
to_create { create(:foo).bar }
end
...然后只需致电create(:bar_from_foo_callback)
即可获得我需要的酒吧。我认为to_create看起来是一个不错的选择,但它给了我:
undefined method `bar' for
#<FactoryGirl::Declaration::Static:0x007fb85e3d79d0>
有没有办法可以定义工厂以便它不会创建,它只是调用另一个工厂并使用回调?
答案 0 :(得分:3)
这似乎有效,尽管我还没有广泛测试过:
factory :bar do
initialize_with { create(:foo).bar }
end
请注意,当您save!
时,factory_girl会在实例上调用create(:bar)
,但在这种情况下,它不会执行任何操作,因为在创建Bar
时已保存Foo
。< / p>