Desde Rails 3/Rspec 2, estoy intentando aprovechar la característica render_views de las especificaciones del controlador. El problema que me he encontrado es que acabamos de instalar la gema de buscapersonas kaminari, y quiero anular la llamada <%= paginate @sites %>
desde mi vista, así que no tengo que anular manualmente todos los métodos internos que define kaminari en el colección para usar con el ayudante paginate
.rspec: Respaldar una llamada al método auxiliar de una plantilla desde una especificación de controlador utilizando render_views
Si esto fue en una especificación de vista, podría apagar el método de ayuda llamando view.stub(:paginate)
, pero no puedo encontrar ninguna manera de conseguir una manija en el objeto vista desde un controlador de especificación (por ejemplo controller.view.stub(:paginate)
). ¿Hay alguna manera de hacerlo, o tenemos la opción de deshabilitar render_views para este método, o resguardar algunos métodos internos de kaminari que no son relevantes para nosotros (ya que deberían estar cubiertos por las pruebas de kaminari, y podrían cambiar en versiones futuras)?
describe SitesController do
render_views
def mock_site(stubs={})
@mock_site ||= mock_model(Site, stubs).as_null_object
end
describe "GET index" do
it "assigns all sites as @sites" do
Site.stub_chain("enabled.ordered.page") {[mock_site]}
# want to do something here like: controller.view.stub(:paginate)
get :index
assigns(:sites).should eq([mock_site])
end
end
end