ruby-on-rails – 使用FactoryGirl验证has_many Association至少
发布时间:2020-12-17 04:33:05 所属栏目:百科 来源:网络整理
导读:抛开关于你是否应该测试模型关联存在的论据,我有一个名为Order的模型,我正在验证它在has_many关联中至少有一个项目使用: class Order ActiveRecord::Base has_many :items validates :items,presence: trueend 我已将FactoryGirl设置为lint我的工厂(检查有
抛开关于你是否应该测试模型关联存在的论据,我有一个名为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 解决方法
根据定义,它会调用.valid?建成后.它似乎会在运行after(:build)块之前调用它.
试着像这样写你的工厂: FactoryGirl.define do factory :order do ignore do items_count 1 end items { build_list(:item,items_count) } end end 这应该在.valid之前构建项目?叫做. 让我知道这个是否奏效 :) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |