Cra*_*ker 42 ruby unit-testing factory ruby-on-rails factory-bot
我有一个模型Foo
has_many'Bar'.我为每个对象都有一个factory_girl工厂.Bar的工厂与Foo有关联; 它会在创建Bar时实例化Foo.
我想要一个创建包含Bar的Foo的Factory.理想情况下,这个Bar将通过:bar工厂创建,并尊重用于创建Foo的构建策略(create/build).
我知道我可以调用:bar工厂,然后从新的Bar中获取Foo引用.我想避免这种情况; 在我的测试用例中,重要的对象是Foo; 称酒吧工厂似乎有点迂回曲折.此外,我可以看到需要一个有多个条形的Foo.
这在Factory_girl有可能吗?你如何在父母中定义这种关系?
Cra*_*ker 50
在Factory.after_ hooks
似乎成功地做到这一点的唯一方法.我找到了一种方法来维护构建策略而不重复代码:
Factory.define :foo do |f|
f.name "A Foo"
f.after(:build) { |foo|
foo.bars << Factory.build(:bar, :foo => foo)
}
f.after(:create) { |foo|
foo.bars.each { |bar| bar.save! }
}
end
Run Code Online (Sandbox Code Playgroud)
该文件指出,after_build
将之前被调用after_create
,如果:create
使用构造策略.如果:build
使用,则只after_build
调用,每个人都很高兴.
归档时间: |
|
查看次数: |
18258 次 |
最近记录: |