如何使用rspec-rails 2测试视图页面(分页)?

时间:2010-10-19 04:00:56

标签: ruby-on-rails rspec testing

rails 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常用来测试它。我得到了: #

的未定义方法`total_pages'

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

2 个答案:

答案 0 :(得分:5)

我使用这个解决方案:

view.stub(:will_paginate)

答案 1 :(得分:3)

您想要一个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

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