如何测试rspec中的else条件

时间:2016-08-23 06:40:10

标签: ruby-on-rails ruby rspec

我是RSpec的新手,我想测试一个控制器的if-else条件,我在互联网上搜索但发现的结果不能很好地满足我的搜索查询。

这是我的rails控制器:

class ScheduleTimeSlotsController < ApplicationController
  def get_available_schedules
    if params[:for_date].to_date==Date.today
      available_schedules=ScheduleTimeSlot.where(:doctor_id => params[:dr_id],:date=>params[:for_date].to_date,:status=>"vacant",:archive=>false).where("start_time >=?",Time.now.seconds_since_midnight).reorder(:start_time)
    else
      available_schedules=ScheduleTimeSlot.where(:doctor_id => params[:dr_id],:date=>params[:for_date].to_date,:status=>"vacant",:archive=>false).reorder(:start_time)
    end
    render :json =>{:available_schedules=>available_schedules}
  end
end

我使用的是ruby版本2.2.4,rails版本是4.2.0

请指导我如何在一个例子的帮助下为这种情况编写RSpec。

提前致谢。

1 个答案:

答案 0 :(得分:2)

您需要为控制器运行两个测试。在一个通行证中,今天是一个日期,一个不是并且测试响应的日期。这里:

[(2, 1), (3, 0)]

免责声明:此代码未经测试,因为我无法访问实际应用。