如何根据指定的日期范围编写rspec来过滤post

我有一个简单的博客应用程序,用户可以根据日期范围(start_date和end_date)过滤post。我使用AJAX调用在索引页面中显示post。 一旦用户使用两个日期选择器给出日期范围并单击提交按钮,就会进行AJAX调用并显示已过滤的post。开发方面没有问题但是在测试的情况下我不知道如何进一步。但我的目标是检查天气,索引页面中显示的post是否在指定的日期范围内。 我已经包含了post控制器中定义的datefilter操作:

def dateFilter if (params[:start_date].present? )&& (params[:end_date].present?) if Time.parse(params[:start_date])<=Time.parse(params[:end_date])&& (Time.parse(params[:start_date])<= Date.today)&& (Time.parse(params[:end_date])<= Date.today) @start_date= params[:start_date].to_date.beginning_of_day @end_date=params[:end_date].to_date.end_of_day else @error = true end else @start_date= Date.yesterday.beginning_of_day @end_date=Date.today.end_of_day end @posts= Post.date_filter(@start_date,@end_date) end 

在索引页面中,我使用了datepicker,如下所示:

   'posts', :action => 'dateFilter'},remote: true) do %>      

当进行AJAX调用时,它将post呈现为js文件datefilter.js.erb

  alert("enter correct date format");  alert("No posts in the given date");  $('.post_div').html('')  $('#page').hide() 

帮助我为上述场景编写rspec

您可以在使用指定日期的操作之前创建多个post,并使用您知道具有指定数量的post的日期范围调用控制器操作,并检查响应中预期post的数量

例如

 @post1 = FactoryBot.create(:post, start_date: DATE) @post2 = FactoryBot.create(:post, start_date: DATE) //Using Factory let(:data) = { start_date: Date, end_date: Date} get:CONTROLLER_ACTION params: data 

然后根据您的要求预期响应