此时我的代码崩溃了。我的模型规格工作正常,确实在计算日期之间的差异。但是,此时我的功能测试正在崩溃(加上我在浏览器中的应用程序)。
我的回调方法:
after_create :calculate
这是终端的规格失败报告:
5) Deleting rents Deleting rent for a given house
Failure/Error: let!(:rent){FactoryGirl.create(:rent,amount:15000,house:runda,tenant:tenant,date:Date.today)}
NoMethodError:
undefined method `round' for nil:NilClass
# ./app/models/rent.rb:96:in `interest_day'
# ./app/models/rent.rb:41:in `interest_charge'
# ./app/models/rent.rb:50:in `chargeable_balance'
# ./app/models/rent.rb:54:in `current_status'
# ./app/models/rent.rb:9:in `calculate'
# ./spec/features/deleting_rents_spec.rb:9:in `block (2 levels) in <top (required)>'
这是方法interest_day
:
def interest_day
return self.date - self.date.mday + tenant.organization.interest_date
end
答案 0 :(得分:0)
好吧,由于缺少太多的代码,所以无法直接帮助您(坦率地说,在这里切割和粘贴它并期望人们在他们的大脑中调试它可能很多......)
在这种情况下,你必须弄清楚
nil
nil
在您的示例中,xyz.round
的第96行会有一些电话rent.rb
。 xyz
为零(正如消息所说的那样)。找出原因,你的问题就会消失。
您可以使用puts ">>>>> #{xyz.inspect}"
或logger.debug "..."
之类的调试语句来填充代码,或者如果您愿意,可以了解如何单步执行调试器。