problema bastante sencillo (que tendría pensamiento), pero estoy teniendo algunos problemas:rieles RSpec enrutamiento: Prueba de acciones en: excepto que no
En Rails 3.1.0.rc6/RSpec 2.6.0 , estoy tratando de probar el enrutamiento de los recursos de mi 'productos', enrutan como esto:
resources :products, :except => [:edit, :update]
el enrutamiento para las acciones válidas funciona, pero quiero asegurar que las rutas de editar y actualizar no son invocable Esto es lo que estoy tratando:
it "does not route to #edit" do
lambda { get("/products/1/edit") }.should raise_error
end
Failure/Error: lambda { get("/products/1/edit") }.should raise_error expected Exception but nothing was raised # ./spec/routing/products_routing_spec.rb:11:in `block (3 levels) in '
... Y, sin embargo, cuando corro
it "does not route to #edit" do
get("/products/1/edit").should_not route_to("products#edit", :id => "1")
end
consigo
Failure/Error: get("/products/1/edit").should_not route_to("products#edit", :id => "1") ActionController::RoutingError: No route matches "/products/1/edit"
Alguna idea de lo que está pasando aquí? Supongo que esto debería ser bastante simple, pero parece que no puedo resolverlo.
Tenemos un ganador. Extraño - Creo que Rails 2 solía manejar lambdas "elevar error", pero claramente no 3.1. Ni siquiera estaba al tanto del método be_routable, muchas gracias. – PlankTon
¡Muy útil! Solo una nota rápida: la prueba anterior DEBE estar en /spec/routing/xxxx.rb o fallará con un error. No puede, por ejemplo, tener esto en /spec/requests/xxxx.rb –