【问题标题】:How to test view page(paginate) with rspec-rails2?如何使用 rspec-rails2 测试视图页面(分页)?
【发布时间】:2011-10-06 16:55:13
【问题描述】:

导轨 3 rspec-rails 2

在控制器中:

def index   @users = User.paginate
  :page => params[:page],:per_pae => 5
end

在视图中:

<h1>User list</h1> 
<% @users.each do |user| %>
  <p>
    <%= user.name %>
  </p>
<% end %>
<%= will_paginate @users %>

现在我使用 rspec-rails 2 来测试视图。

require 'spec_helper'

describe "/users/index.html.erb" do   
  before(:each) do
    assign(:users, [
      stub_model(User),
      stub_model(User),
      stub_model(User,
      stub_model(User)
    ])
  end

  it "renders a list of contracts" do
    render
    rendered.should contain "User list"
  end
end

现在我使用 rspec common 来测试它。我得到了: #

的未定义方法“total_pages”

如何存根分页或其他方法来修复它?

【问题讨论】:

    标签: ruby-on-rails rspec testing


    【解决方案1】:

    我使用这个解决方案:

    view.stub(:will_paginate)
    

    【讨论】:

    • 就我而言,我使用 kaminari 进行分页,我使用了view.stub(:paginate)
    【解决方案2】:

    你想要一个 will_paginate 集合对象的实例:

    before(:each) do
      page = 1
      per_page = 1
      total_entries = 4
      users = WillPaginate::Collection.create(page, per_page, total_entries) do |pager|
        pager.replace([stub_model(User), stub_model(User), stub_model(User), stub_model(User)])
      end
      assigns(:users, users)
    end
    

    这将使您能够访问正确分页所需的所有属性。

    【讨论】:

    • 感谢这帮了很大的忙,尽管我会内联页面参数并在自己的 let 块中创建用户;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-28
    • 1970-01-01
    • 1970-01-01
    • 2011-10-28
    • 1970-01-01
    • 2012-10-01
    • 1970-01-01
    相关资源
    最近更新 更多