will_paginate rails per page ruby-on-rails ruby-on-rails-3 rspec pagination kaminari

ruby on rails - rails - Prueba de RSpec rota por paginación(Kaminari)



rails will_paginate per page (2)

Tengo una especificación de vista que estaba pasando, pero está rota ahora que la paginación (a través de la gema Kaminari) se ha agregado a la vista. Todavía estoy tratando de entender la sintaxis de RSpec ... así que busco ayuda para que esto pase, ya que la página funciona bien en el navegador. Soy consciente de que muchas personas fruncen el ceño ante las especificaciones de vista por ser frágiles (probablemente por razones como esta), pero aún así me gustaría que esta pase

Estoy asignando algunos postes a la matriz @posts. Pero los arreglos no responden a current_page . Entonces, ¿cómo debo manejar esto en RSpec?

Failures: 1) posts/index.html.haml renders a list of posts Failure/Error: render ActionView::Template::Error: undefined method `current_page'' for #<Array:0x000001028ab4e0> # ./app/views/posts/index.html.haml:31:in `_app_views_posts_index_html_haml__291454070937541541_2193463480'' # ./spec/views/posts/index.html.haml_spec.rb:39:in `block (2 levels) in <top (required)>''

spec/views/posts/index.html.haml_spec.rb :

require ''spec_helper'' describe "posts/index.html.haml" do before(:each) do ... assign(:posts, [ Factory.stub(:post), Factory.stub(:post) ]) view.should_receive(:date_as_string).twice.and_return("June 17, 2011") ... end it "renders a list of posts" do render rendered.should have_content("June 17, 2011") ... end end


Deberías aplastar el comportamiento, prueba esto:

before(:each) do ... posts = [Factory.stub(:post), Factory.stub(:post)] posts.stub!(:current_page).and_return(1) posts.stub!(:total_pages).and_return(2) assign(:posts, posts) view.should_receive(:date_as_string).twice.and_return("June 17, 2011") ... end


También puedes hacer algo como a continuación:

assign(:posts, Kaminari.paginate_array([ Factory.stub(:post), Factory.stub(:post) ]).page(1))