rspec在数据库中查找记录

时间:2014-10-29 06:45:33

标签: ruby-on-rails ruby rspec factory-bot

我正在尝试测试一个控制器而且我有这个:

@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

0 个答案:

没有答案