0
我有一個簡單的模型,其中付款屬於貸款。我正在使用rspec和shoulda-matcher來測試驗證。然而,我仍然收到錯誤指出未完成的餘額 - 表明這是一個未定義的方法爲零類。但是當我在rails控制檯中使用模型時,此驗證正在工作。任何人都知道爲什麼它沒有通過測試?Rsepc驗證測試與自定義驗證:未定義的方法和零類錯誤
謝謝。
class Payment < ActiveRecord::Base
belongs_to :loan
validates_presence_of :loan_id
validate :proper_amount
private
def proper_amount
errors.add(:amount, "proper") if amount > loan.outstanding_balance
end
end
FactoryGirl.define do
factory :payment do
loan
amount 100.0
post_at Date.today
end
end
FactoryGirl.define do
factory :loan do
funded_amount 5000.0
end
end
RSpec.describe Payment do
before (:all) do
@loan = FactoryGirl.create(:loan)
@payment = FactoryGirl.create(:payment, loan: @loan)
end
describe 'ActiveModel validations' do
#basic validations on attributes
it { should validate_presence_of(:loan_id) }
end
end
Failure/Error: it { should validate_presence_of(:amount) }
NoMethodError:
undefined method `outstanding_balance' for nil:NilClass
謝謝!我做了你所說的並有同樣的錯誤......有什麼想法? – LOCKLOCK
你的factory_girl裝載和付款定義是什麼?也許給'let!'和'subject!'添加解釋標記,這樣RSpec不會創建它們懶惰地 –
嗨,謝謝你的迴應。我在我的工廠女孩代碼中添加了。工廠在其他測試中工作正常。我試圖檢查工廠女孩實例變量,輸出也很好。你是什麼意思添加解釋標記? – LOCKLOCK