nub*_*nub 1 ruby ruby-on-rails factory-bot
我写了一个rspec测试,它在我的rubric中添加了一些单元.
我有两个模型=> Rubric和Units.Rubric有很多单位.它看起来像这样:
@rubric.units.push Factory :text_unit
@rubric.save
Run Code Online (Sandbox Code Playgroud)
然后我找到了factory_girl并尝试将此代码重写为工厂.但它没有用.
我怎么能在Factory Girl中写这个关联.我试过这个:
factory :common_rubric , :class => :common_info_rubric do |f|
f.sequence(:name) {|n| "common_info_rubric#{n}"}
end
factory :text_unit, :class => text_info_unit do |f|
f.association :common_rubric_with_unit
f.sequence(:name) {|n| "text_unit#n}" }
end
factory :common_rubric_with_unit , :parent => :common_rubric do |f|
f.units { |unit| unit.association(:text_info_unit) }
end
Run Code Online (Sandbox Code Playgroud)
我总是有错误
SystemStackError:
stack level too deep
Run Code Online (Sandbox Code Playgroud)
你有一个循环参考.当您创建text_unit它时,它会创建一个关联的common_rubric_with_unit.common_rubric_with_unit创建关联的定义text_unit,我们在一开始就回来了.
你需要从任何一方删除其中一个关联,这应该工作:
factory :text_unit, :class => text_info_unit do |f|
f.association :common_rubric_with_unit
f.sequence(:name) {|n| "text_unit#n}" }
end
factory :common_rubric_with_unit , :parent => :common_rubric do |f|
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3812 次 |
| 最近记录: |