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

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

问题描述:

我已经采用了一个Rails应用程序,并试图在一些模型测试中;我第一次使用FactoryGirl,所以这可能是一个初学者问题。factory_girl - 如何在另一个对象的定义内创建一个对象

有一个模型叫做object_connection,它将两条信息链接起来。它在开发中运行良好,但涉及到food_item和drink_item,但没有关联。问题是每次我运行一个规格这两个创建的运行。我希望得到一个简单的工厂来创建这一点,但下面不工作:

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 

我尝试过做一个(:创建),但它似乎没有奏效。我理想中应该有一个关联,但我宁愿让这个测试正确工作,然后提出这些更改。在创建工厂时创建局部变量的正确方法是什么?

THX

+0

我想'food','food_location'和'drink'是'belongs_to'在ObjectConnection协会。我对吗? – kiddorails 2013-04-29 22:01:42

+0

我希望:-)纳特在这一点上。他们是手动管理,并希望通过关联进行建模。一个问题是食物和饮料来自同一张桌子。考虑最好的方法来做到这一点,因为它目前是一个/或两个项目,但未来可能会更多。 – timpone 2013-04-29 23:06:58

我不知道这是正确的做法,但对我的工作(通过TestFoodItem.last.location_id)。

FactoryGirl.define做 厂:test_object_connection,等级:ObjectConnection做

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 } 

末 结束