2
我是新手,測試和factory_girl,我想通過關聯使用factory_girl爲has_many創建工廠。
我在網上看過很多文章,但看不到最好的辦法。我有兩個型號,Widget
和Feature
。
該協會是:如何通過關聯定義工廠的has_many
class Feature < ActiveRecord::Base
has_many :widget_features
has_many :widgets, :through => :widget_features
end
和
class Widget < ActiveRecord::Base
has_many :widget_features
has_many :features, :through => :widget_features
end
到目前爲止,我已經試過這樣:
- 在我widget_feature_spec.rb,我這樣做是
require 'spec_helper'
describe WidgetFeature do context "- METHOD - method_name " do it "should do blah" do widget = Factory.create(:widget) 10.times { |i| Factory.create(:feature, :widget_id => widget.id)} result = WidgetFeature.method_name(widget.id) # do all the checks and expectations now end end end
許多工廠都
Factory.define :feature do |f|
f.name "Feature_name"
f.description "Feature_description"
f.association :widget
end
和
Factory.define :widget do |f|
f.sequence(:title) {|n| "Widget_title#{n}"}
end
但測試失敗,給這個錯誤:
NoMethodError:undefined method `widget_id=' for #
然後,如果我添加
f.widget_id Factory.create(:widget).id
我的特點的工廠,我得到這個錯誤,
/factory_girl/factory.rb:334:in `factory_by_name': No such factory: widget (ArgumentError)
我不知道該怎麼辦。我相信我沒有把握好。爲這些協會創建工廠的最佳方式是什麼?
我是否應該在WidgetFeature
或Wigdet
和Feature
中創建關聯?
我假設你有一個widget_features連接表,你沒有向我們展示了,是嗎? – jaydel