【发布时间】:2023-03-19 08:34:02
【问题描述】:
我有一个简单的模型,付款属于贷款。我正在使用 rspec 和 shoulda-matcher 来测试验证。但是,我一直收到指向未结余额的错误——表明它是 nil 类的未定义方法。但是当我在 rails 控制台中使用模型时,这个验证是有效的。有谁知道为什么它没有通过测试???
谢谢。
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
【问题讨论】:
标签: ruby-on-rails validation rspec shoulda