2010-10-19 3 views
1

rails 3 rspec-rails 2Comment tester la page de vue (paginer) avec rspec-rails2?

Contrôleur:

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

Vu:

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

Maintenant j'utilise rspec rails 2 à la vue de test.

require 'spec_helper' 

describe "https://stackoverflow.com/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 

Maintenant, j'utiliser pour tester rspec commun it.I obtenu: méthode non définie TOTAL_PAGES' pour #

Comment stub paginate ou d'une autre façon de le réparer?

Répondre

5

J'utilise cette solution:

view.stub(:will_paginate) 
3

Vous voulez une instance de l'objet de collection 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 

Cela vous donnera accès à tous les attributs nécessaires pour correctement paginera.

+0

grâce cela a aidé beaucoup, mais j'inline la page-params et créer des utilisateurs dans un même bloc let;) – jethroo

Questions connexes