У меня проблема с тестированием следующей модели:
class Bill < ActiveRecord::Base
belongs_to :consignee
before_save :calc_rate
def calc_rate
self.chargeableweight = self.consignee.destination.rate * self.weight
end
end
Модель получателя:
class Consignee < ActiveRecord::Base
belongs_to :destination
has_many :bills
end
Контроллеры еще не затронуты.
поведение приложения правильное (ответьте на вопрос: есть ли проблемы с производительностью в этом решении?) - но тестовый перерыв.
У вас есть нулевой объект, когда вы его не ожидали!Возможно, вы ожидали экземпляр Array.Произошла ошибка при оценке nil. *
Спасибо за совет, Дэнни
обновление:
Этот тест на счет-паузу с использованием фабричной девушки:
describe Bill do
it "should call the calc_rate method" do
bill = Factory.build(:bill)
bill.save!
bill.should_receive(:calc_rate)
end
end
У вас есть нулевой объект, когда вы его не ожидали!
Фабрики:
Factory.define :destination do |f|
f.airport_code "JFK"
end
Factory.define :consignee do |f|
...
f.association :destination
end
Factory.define :bill do |f|
f.association :consignee
f.weight 10
f.chargeableweight 20.0
f.after_create do |bill|
bill.calc_rate
end