【问题标题】:RSpec test index view and will_paginateRSpec 测试索引视图和 will_paginate
【发布时间】:2015-07-13 08:36:22
【问题描述】:

我是 Ruby 测试新手,为此我使用 RspecFactoryGirl

我想测试我的索引视图,其中显然有一个will_paginate

这是我的控制器:

def index
  @products = Product.paginate(:page => params[:page], :per_page=>30)
  respond_with(@products)
end

我有一个包含will_paginate 的基本视图和一个产品表。

这是我的测试:

RSpec.describe "products/index", type: :view do
  before(:each) do
    @products = Array.new
    31.times do
      @products << FactoryGirl.create(:product)
    end
    assign(:products, @products)
  end

  it "renders a list of products" do
    render
  end
end

首先,这样做是不是正确的方法:创建一个数组,然后分配它?

如果我错了,请纠正我,但assign(:products, @products) 相当于@products = Product.paginate(:page =&gt; params[:page], :per_page=&gt;30) 用于测试

【问题讨论】:

    标签: ruby-on-rails rspec factory-bot will-paginate


    【解决方案1】:

    我用这段代码绕过了我的问题:

    RSpec.describe "products/index", type: :view do
      before(:each) do
        # Create a list of 31 products with FactoryGirl
        assign(:products, create_list(:product, 31))
      end
    
      it "renders a list of products" do
        allow(view).to receive_messages(:will_paginate => nil)
        render
      end
    end
    

    我愿意接受有关此解决方案的任何建议。

    【讨论】:

      【解决方案2】:

      不,不一样。因为数组不同于带有Relation methods 的ActiveRecord::Relation(这是Product.paginate(:page =&gt; params[:page], :per_page=&gt;30) 返回的内容)。 也许是更好的方法,但这应该可行:

      RSpec.describe "products/index", type: :view do
        before(:each) do
          @products = WillPaginate::Collection.new(4,10,0)
          31.times do
            @products << FactoryGirl.create(:product)
          end
          assign(:products, @products)
        end
      
        it "renders a list of products" do
          render
        end
      end
      

      这里@products = WillPaginate::Collection.new(4,10,0) 创建了一个包含 4 个页面和每个页面上 10 个元素的集合。

      【讨论】:

        猜你喜欢
        • 2016-07-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-25
        • 1970-01-01
        相关资源
        最近更新 更多