abbastanza semplice problema (avrei pensato), ma sto avendo alcuni problemi:Rails RSpec Routing: Test azioni: ad eccezione Non far passare
In Rails 3.1.0.rc6/RSpec 2.6.0 , sto cercando di testare il percorso della mia risorsa 'prodotti', instradato in questo modo:
resources :products, :except => [:edit, :update]
il routing per le azioni valide funziona, ma voglio assicurare che le vie di modificare e aggiornare non sono callable. Ecco quello che sto cercando:
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 '
... Eppure, quando corro
it "does not route to #edit" do
get("/products/1/edit").should_not route_to("products#edit", :id => "1")
end
ottengo
Failure/Error: get("/products/1/edit").should_not route_to("products#edit", :id => "1") ActionController::RoutingError: No route matches "/products/1/edit"
Qualsiasi idea di cosa sta succedendo qui? Immagino che questo dovrebbe essere abbastanza semplice, ma non riesco a capirlo.
Abbiamo un vincitore. Strano - Penso che Rails 2 fosse usato per gestire "raise error" lambda, ma chiaramente non 3.1. Non ero nemmeno a conoscenza del metodo be_routable - molte grazie. – PlankTon
Molto utile! Solo una breve nota: il test sopra DEVE essere in /spec/routing/xxxx.rb o fallirà con un errore. Ad esempio, non puoi avere questo in /spec/requests/xxxx.rb –