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コードに と が混在しているのがわかりますcreatecreate新しいオブジェクトを作成してデータベースに保存します。build作成しますが、すぐには保存しません。

したがって、変数dlpはメモリ内に存在する ActiveRecord オブジェクトですが、データベースには存在しません。Repurchase.lookupメソッドが ActiveRecord 呼び出しを使用して、データベース内の適切なものを探すと仮定しています。したがって、これらの新しいオブジェクトが に表示されるようにするlookupには、 で作成するか、create自分で呼び出してデータベースに保存する必要がありますsave

于 2012-10-15T22:39:36.773 に答える