如何 return 创建 factory_girl 中的现有实例?
How do I return an existing instance from factory_girl create?
我有两个工厂:
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)
即可获得我需要的 Bar。我认为 to_create 看起来是个不错的选择,但它给了我:
undefined method `bar' for
#<FactoryGirl::Declaration::Static:0x007fb85e3d79d0>
有没有一种方法可以定义工厂,使其不创建,而只是调用另一个工厂并使用回调?
这似乎有效,虽然我还没有广泛测试它:
factory :bar do
initialize_with { create(:foo).bar }
end
请注意,当您 create(:bar)
时,factory_girl 在实例上调用 save!
,但在这种情况下它什么都不做,因为 Bar
在创建 Foo
.
我有两个工厂:
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)
即可获得我需要的 Bar。我认为 to_create 看起来是个不错的选择,但它给了我:
undefined method `bar' for
#<FactoryGirl::Declaration::Static:0x007fb85e3d79d0>
有没有一种方法可以定义工厂,使其不创建,而只是调用另一个工厂并使用回调?
这似乎有效,虽然我还没有广泛测试它:
factory :bar do
initialize_with { create(:foo).bar }
end
请注意,当您 create(:bar)
时,factory_girl 在实例上调用 save!
,但在这种情况下它什么都不做,因为 Bar
在创建 Foo
.