我正在尝试使用 RSpec 测试 Hour 模型,即行为类似于范围的类方法“find_days_with_no_hours”。通过 STI 关联的业务 has_many Hours。find_days_with_no_hours 需要通过业务对象调用,我不知道如何在 RSpec 测试中进行设置。我希望能够测试类似的东西:
bh = @business.hours.find_days_with_no_hours
bh.length.should == 2
我尝试了各种方法,比如创建一个业务对象(例如,Business.create),然后设置 @business.hours << mock_model(BusinessHour, ..., ..., ...) 但这并没有不工作。
这通常是如何完成的?
class Business < ActiveRecord::Base
has_many :hours, :as => :hourable
end
class Hour < ActiveRecord::Base
belongs_to :hourable, :polymorphic => true
def self.find_days_with_no_hours
where("start_time IS NULL")
end
end