1

我的 Active Record 中有一个 self.lookup 方法。我想要做的是使用 FactoryGirl 来测试该方法。当我调用类 Repurchase.lookup(d, lp) 时,它从数据库中提取种子数据而不是测试数据。

在回购活动记录中:

def self.lookup(division, loan)

end

在我的 RSpec 代码中:

rr = FactoryGirl.create(:repurchase, pricing_cat_id: nil, loan_id: 1)       
puts rr.inspect

d = FactoryGirl.build(:division, id: 1)
lp = FactoryGirl.build(:loan, id: 1, pricing_cat_id: nil)

rv = Repurchase.lookup(d, lp)  
#When I call this it goes against the database 
#HOW TO DO THIS (rv = Repurchase.lookup(d, lp) against test data)?

rv.pricing_cat_id.should eql(nil)

rr = FactoryGirl.create(:repurchase, pricing_cat_id: 1, loan_id: nil)       
puts rr.inspect

lp = FactoryGirl.build(:loan, id: nil, pricing_category_id: 1)
lp.pricing_cat_id.should eql(1)
rv = Repurchase.lookup(d, lp)  #HOW TO DO THIS lookup call??

先感谢您

4

1 回答 1

2

我看到你在你的代码中混合build和。将创建新对象并将其保存到数据库中;创建它但不会立即保存它。createcreatebuild

所以你的变量dlpActiveRecord 对象是生活在内存中,而不是在数据库中。我假设您的Repurchase.lookup方法使用 ActiveRecord 调用在数据库中查找正确的内容。因此,对于那些对 可见的新对象lookup,您应该使用 制作它们create,或者通过调用它们自己将它们保存到数据库save中。

于 2012-10-15T22:39:36.773 回答