FactoryGirl:让!不会自动创建对象

时间:2017-11-14 18:17:08

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

例如,我使用FactoryGirl

具有以下定义的对象
let!(:product_1) { FactoryGirl.create(:product) }
let!(:product_2) { FactoryGirl.create(:product) }
let!(:product_uom_1) { FactoryGirl.create(:product_uom, :store_order_unit, product: product_1) }
let!(:product_uom_2) { FactoryGirl.create(:product_uom, :store_order_unit, product: product_2) }

let!(:purchase_order_detail_1) {
  FactoryGirl.create(:purchase_order_detail, :default_return_quantity,
                     product: product_1,
                     purchase_order: purchase_order,
                     order_quantity: 100)
}

上面的代码将运行失败,因为当时创建purchase_order_detailproduct_uom_1product_uom_2尚未创建。 (这会使我后来的一些代码失败)。但如果我打电话给那些对象"手动":

let!(:purchase_order_detail_1) {
  product_uom_1
  product_uom_2
  FactoryGirl.create(:purchase_order_detail, :default_return_quantity,
                     product: product_1,
                     purchase_order: purchase_order,
                     order_quantity: 100)
}

这里的不同之处在于我只是将其打印出来。然后在创建product_uom_1之前创建product_uom_2purchase_order_detail。我不知道为什么,因为我使用了let!。请向我解释如何修复,不要使用这个"技巧"因为它让我的规格变得丑陋。

0 个答案:

没有答案