factory_girl - 如何在另一个对象的定义中创建一个对象

时间:2013-04-29 20:57:50

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

我已经采用了Rails应用程序并试图进行一些模型测试;我是第一次使用FactoryGirl所以这可能是一个初学者的问题。

有一个名为object_connection的模型将两条信息链接在一起。它在开发中工作正常,但它与food_item和drink_item有关,但没有关联。问题是,每次运行规范时,这两个create都会运行。我想得到一个简单的工厂来创建它,但以下不起作用:

FactoryGirl.define do
  factory :test_object_connection, class: ObjectConnection do
    m=FactoryGirl.create :menu_item
    fi=FactoryGirl.create(:test_food_item, menu_header_id: 1, menu_id: 1)
    food_id fi.id
    food_location_id fi.location_id
    drink_id m.id
  end
end

我尝试过做一次(:create),但它似乎没有起作用。我理所当然地知道应该有一个关联,但我宁愿让这个测试正常工作,然后提出这些改变。在创建工厂时创建局部变量的正确方法是什么?

THX

1 个答案:

答案 0 :(得分:0)

我不确定这是正确的方法,但对我有用(通过TestFoodItem.last.location_id)。

FactoryGirl.define做   factory:test_object_connection,class:ObjectConnection do

food_id          { FactoryGirl.create(:test_food_item, menu_header_id: 1, menu_id: 1).id }

food_location_id { TestFoodItem.last.location_id }

drink_id         { FactoryGirl.create(:menu_item).id }

端 端