Ale*_*xey 13 singleton machinist factory-bot
在工厂女孩/机械师的工厂中是否有一些配置强制它在测试用例期间只创建一次具有相同工厂名称的对象并且一直返回相同的实例?我知道,我可以这样做:
def singleton name
@@singletons ||= {}
@@singletons[name] ||= Factory name
end
...
Factory.define :my_model do |m|
m.singleton_model { singleton :singleton_model }
end
Run Code Online (Sandbox Code Playgroud)
但也许有更好的方法.
Cub*_*bre 20
您可以initialize_with在工厂内使用宏并检查对象是否已存在,然后不要再次创建它.当所述工厂被关联引用时,这也有效:
FactoryGirl.define do
factory :league, :aliases => [:euro_cup] do
id 1
name "European Championship"
owner "UEFA"
initialize_with { League.find_or_create_by_id(id)}
end
end
Run Code Online (Sandbox Code Playgroud)
这里有一个类似的问题,有更多的选择:在Rails中使用具有唯一约束的关联的factory_girl.获得重复的错误
不确定这对您是否有用。
通过此设置,您可以使用工厂“singleton_product”创建 n 个产品。所有这些产品都将具有相同的平台(即平台“FooBar”)。
factory :platform do
name 'Test Platform'
end
factory :product do
name 'Test Product'
platform
trait :singleton do
platform{
search = Platform.find_by_name('FooBar')
if search.blank?
FactoryGirl.create(:platform, :name => 'FooBar')
else
search
end
}
end
factory :singleton_product, :traits => [:singleton]
end
Run Code Online (Sandbox Code Playgroud)
您仍然可以使用标准产品工厂“产品”来创建平台为“测试平台”的产品,但是当您调用它来创建第二个产品时,它将失败(如果平台名称设置为唯一)。
| 归档时间: |
|
| 查看次数: |
2605 次 |
| 最近记录: |