RSpec FactoryGirl类方法调用

时间:2012-10-15 22:32:29

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

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

在Repurchase活动记录中:

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??

提前谢谢

1 个答案:

答案 0 :(得分:2)

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

因此,您的变量dlp是ActiveRecord对象,它们存在于内存中,但不存在于数据库中。我假设你的Repurchase.lookup方法使用ActiveRecord调用来查找数据库中正确的东西。因此,对于lookup可见的新对象,您应该使用create制作这些对象,或者通过调用save将它们保存到数据库中。