gpt4 book ai didi

ruby - 如何从 factory_girl create 返回现有实例?

转载 作者:数据小太阳 更新时间:2023-10-29 08:43:57 26 4
gpt4 key购买 nike

我有两个工厂:

factory :foo
factory :bar

一个 Foo 有一个 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 时已经保存。

关于ruby - 如何从 factory_girl create 返回现有实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37798806/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com