2010-07-15 4 views
0

Je dois utiliser la fonctionnalité params_from, qui était obsolète. Maintenant route_to combine le comportement de params_from et route_for. Mais je ne veux pas tester que route génère le chemin, parce que ce n'est pas le cas et c'est intentionnel (pour la compatibilité descendante dans les anciens e-mails, j'ai besoin de "alias" ancien chemin vers le bon contrôleur/action, mais .? chemin généré par la nouvelle route sera différente, je sais, confus;)RSpec: test du chemin d'accès au mappage (mais pas l'inverse)

Lorsque vous utilisez params_from et route_to, je reçois des résultats contradictoires (peut-être params_for est cassé):

# params_from(:get, 'user/tasks').should == { :controller => 'user', :action => 'tasks' } 
No route matches "user/tasks" with {:method=>:get} 

# { :get => 'user/tasks' }.should_not be_routable 
Expected 'GET user/tasks' to fail, but it routed to {"action"=>"tasks", "controller"=>"user"} instead 

la route existe, Je peux utiliser le chemin via l'interface utilisateur avec succès.

IMO cette combinaison de params_from et route_for est une mauvaise idée, sauf si les correspondances séparées sont toujours supportées. Mais peut-être que je l'ai raté quelque chose d'évident;)

Répondre

0

C'est ce que je cherchais, et trouvé en piratage du code source: assert_recognizes({ :controller => 'user', :action => 'tasks'}, 'user/tasks', {}, nil)

Je vais probablement l'envelopper sous params_for matcher.

0

Quelle est la valeur de tester votre itinéraires explicitement?

Vous devriez probablement obtenir ceci gratuitement si vous écrivez même un test fonctionnel minimal pour vos contrôleurs.

Questions connexes