RSpec offre deux fonctions pour tester les routes. La première vérifie la génération de l’URL, étant donnés les contrôleurs, actions, etc. :
route_for(:controller => 'sessions', :action => 'new').should == "/login"
La seconde fait la vérification inverse ; la requête active-t-elle les bons paramètres ?
params_from(:get, '/login').should == {:controller => 'sessions', :action => 'new'}
Il n’y a pas de fonction spécifique pour tester les routes nommées (par exemple login_path). Ça ne présente pas de difficulté particulière, mais il y a une astuce : les routes nommées ne sont chargées qu’après le première requête. Un exemple :
describe "named routing" do before(:each) do # If you haven't already made a get/post request through the rails integration # session infrastructure the named routes don't get loaded get :new end it "should route login_path() correctly" do login_path.should == "/login" end end