抛开关于你是否应该测试模型关联存在的论据,我有一个名为Order的模型,我正在验证它在has_many关联中至少有一个项目使用:
class Order < ActiveRecord::Base has_many :items validates :items,presence: true end
我已将FactoryGirl设置为lint我的工厂(检查有效性).所以除非我为has_many集合创建一个项目,否则我的订单工厂无效.
我的订单工厂看起来像这样:
FactoryGirl.define do factory :order do ignore do items_count 1 end after(:build) do |order,evaluator| create_list(:item,evaluator.items_count,order: order) end end end
根据Factory Girl的入门指南:
FactoryGirl.lint builds each factory and subsequently calls #valid? on it
但是,当我运行我的规范时,Factory Girl会抛出FactoryGirl :: InvalidFactoryError,因为订单工厂无效.
after(:build) do |order,evaluator| evaluator.items_count.times do order.items << FactoryGirl.create(:item) end #create_list(:item,order: order) end