rails proyecto libro formularios español crear ruby-on-rails ruby routing rspec routes

ruby on rails - proyecto - ¿Cómo usar rspec para probar rutas con nombre?



scaffold ruby on rails (5)

Puede hacer esto en las especificaciones de su controlador con el método assert_routing , así:

describe UsersController do it "should recognize a specific users#show route" do assert_routing("/users/23", {:controller => "users", :action => "show", :id => 23}) end end

Más documentación está aquí .

Dado que tengo una ruta con nombre:

map.some_route ''/some_routes/:id'', :controller => ''some'', :action => ''other''

¿Cómo uso el archivo de especificación de enrutamiento ''spec / routing / some_routing_spec.rb'' para probar esa ruta con nombre?

Lo he intentado después del bloque "describe SomeRouteController" y no funciona, obtengo el "método indefinido" helper ":

describe SomeRouteHelper, ''some routes named routes'' do it ''should recognize some_route'' do helper.some_route_path(23).should == ''/some_routes/23'' end end


Si esto está en una especificación de controlador, puede llamar al método de enrutamiento directamente, no necesita ayuda.

describe SomeController do it ''should recognize ma routes!'' do thing_path(23).should == ''/things/23'' end end


En RSpec-Rails 2.7+ puede crear un directorio de spec/routing y poner sus especificaciones de enrutamiento allí. Consulte los documentos de rspec-rails para obtener más información.


hay un buen matda HORDA para esto también:

it { should route(:get, "/users/23").to(:action => "show", :id => 23)

más información sobre el uso de los adaptadores de shoulda con rspec:

https://github.com/thoughtbot/shoulda-matchers


Así es como escribo las especificaciones usando RSpec2, Shoulda y Capybara. Guarde este archivo de ejemplo en # {Rails.root} /spec/routing/thingz_routing_spec.rb o mi preferencia # {Rails.root} /spec/routing/thingz_controller_spec.rb

require "spec_helper" describe ThingzController do describe "routing" do it "routes to #index" do get("/thingz").should route_to("thingz#index") end end end