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:
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