我正在尝试测试一个控制器而且我有这个:
@category ||= Category.where(name: 'cat1').limit(1).first
@product ||= Product.where(...).limit(1).first
Product
从一对一的关联中拥有一个名为category_id
的属性:Product has_one Category。
当我运行测试时,我使用FactoryGirl创建Product对象,我只用两个caterories加载seeds.rb
。
结果是@product.category_id
不等于@category.id
。类别的id始终相同(因为它取自数据库或本例中的种子)
我的问题是如何改善这个?
更新
产品的原始工厂是
FactoryGirl.define do
factory :product do
name "Some Product"
...
trait :category_1 do
after(:build) do |product|
product.pictures << FactoryGirl.build(:picture, :product => product)
end
end
end
end
但是当我添加关联时,我收到错误can't write unknown attribute 'product_id'
新工厂
#factory for product
...
trait :category_1 do
category { create(:category) }
after(:build) do |product|
product.pictures << FactoryGirl.build(:picture, :product => product)
end
end
...
#factory for category
FactoryGirl.define do
factory :category do
name "category1"
end
end