【问题标题】:Rspec testing pagination in the controllerRspec 测试控制器中的分页
【发布时间】:2014-10-30 23:43:34
【问题描述】:

我有一个控制器,它收集数据以像这样显示在屏幕上

@searches.where(user: some_user)
         .between(date1, date2)
         .order("created_at desc")
         .limit(50)
         .offset(params[:pageOffset])

render json: { html: render_to_string(index.html.erb, locals: {searches: @searches}) }

在我的控制器测试中,我想确保限制和偏移工作,但我做不到

51.times { FactoryGirl.create(:search) }

因为搜索需要有用户以及需要设置的其他属性才能正确测试。

如果我要生成在数据库中进行超过 50 次搜索所需的所有数据,那将花费太长时间(我已经尝试过,这是不可接受的)

我需要一个更好的解决方案来测试控制器规范中的限制和偏移量(也就是我的分页)。有什么更好的方法不会减慢测试套件的速度?

【问题讨论】:

    标签: ruby-on-rails rspec pagination factory-bot


    【解决方案1】:

    我最终做出了一项主要有助于测试的设计更改,但也开辟了未来功能的可能性。我的控制器现在看起来像这样:

    @searches.where(user: some_user)
         .between(date1, date2)
         .order("created_at desc")
         .limit(params[:page_limit])
         .offset(params[:page_offset])
    
    render json: { html: render_to_string(index.html.erb, locals: {searches: @searches}) }
    

    在页面中设置了我的限制,如下所示:

    var pageLimit = pageLimit || 20;
    

    我可以设置或不设置它,然后在测试时我可以强制它变小,以免工厂测试过载。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多