En utilisant la pointe here J'ai construit une méthode dans un module d'aide comme ceci:Test link_to sans chemin aide à l'aide Rspec
describe ExampleHelper do
def build_link
link_to "RSS feed", params.merge(:format => :rss), :class => "feed_link"
end
end
Cependant, quand je teste cette méthode, je reçois l'erreur suivante:
Failure/Error: subject { helper.build_link }
ActionController::UrlGenerationError:
No route matches {:action=>"index", :foo=>"bah", :foobah=>["1", "2", "3"], :results_per_page=>"25"}
# /Users/tombrammar/.rvm/gems/[email protected]/gems/actionpack-4.2.6/lib/action_dispatch/journey/formatter.rb:46:in `generate'
# /Users/tombrammar/.rvm/gems/[email protected]/gems/actionpack-4.2.6/lib/action_dispatch/routing/route_set.rb:721:in `generate'
# /Users/tombrammar/.rvm/gems/[email protected]/gems/actionpack-4.2.6/lib/action_dispatch/routing/route_set.rb:752:in `generate'
# /Users/tombrammar/.rvm/gems/[email protected]/gems/actionpack-4.2.6/lib/action_dispatch/routing/route_set.rb:799:in `url_for'
# /Users/tombrammar/.rvm/gems/[email protected]/gems/actionpack-4.2.6/lib/action_dispatch/routing/url_for.rb:156:in `url_for'
# /Users/tombrammar/.rvm/gems/[email protected]/gems/actionview-4.2.6/lib/action_view/routing_url_for.rb:94:in `url_for'
# /Users/tombrammar/.rvm/gems/[email protected]/gems/actionview-4.2.6/lib/action_view/helpers/url_helper.rb:181:in `link_to'
Il semble que parce que je teste dans l'aide il ne peut pas déterminer quel contrôleur utiliser et donc comment construire l'URL.
Quelqu'un peut-il m'aider à comprendre comment résoudre ce problème? C'est à dire. peut-être que je peux talonner le contrôleur de l'aide rspec?
Pouvez-vous nous indiquer la route pertinente? (à la fois dans votre fichier routes et via les routes rake) –
@TarynEast Comme je l'ai dit plus haut, vous pouvez appeler 'link_to' sans passer par un chemin. Il essaie ensuite de déduire votre chemin actuel lui-même. Cela fonctionne très bien en pratique, mais lors d'un test via rspec (et donc sans contrôleur courant), il renvoie cette erreur. –
Comme je l'ai dit plus haut ... (BTW c'est une phrase terrible probablement vous ne devriez pas l'utiliser) - pouvez-vous s'il vous plaît nous montrer le chemin de la page d'origine ... parce que cela nous aidera à déterminer quels paramètres il attend et qu'est-ce l'amenant à se casser :) et oui, sans un contrôleur actuel - il ne fonctionnera tout simplement pas - pourquoi n'y a-t-il pas de contrôleur actuel dans votre spécification? –