Aucune route ne correspond à une erreur avec la spécification application_controller
-
05-07-2019 - |
Question
J'ai une spécification application_controller qui échoue depuis que j'ai supprimé la route contrôleur / action de routes.rb. J'obtiens l'erreur suivante:
No route matches {:controller=>"application", :action=>"index"}
De nombreux tests ont échoué de la même manière, mais j'ai pu les résoudre en incluant les paramètres corrects dans l'appel get. Ainsi, par exemple, si je voulais obtenir la route d’affichage standard pour les articles de mes spécifications, je devais changer
get :show to get :show, :id => '1'
Malheureusement, je ne suis pas sûr maintenant de ce qu'il faut transmettre pour les spécifications du contrôleur d'application. J'ai inclus mon test ci-dessous.
describe ApplicationController do
it "should find the latest published posts and assign them for the view" do
Post.should_receive(:latest).and_return(@posts)
get :index
assigns[:posts].should == @posts
end
it "should find the latest approved comments and assign them for the view" do
Comment.should_receive(:latest).and_return(@comments)
get :index
assigns[:comments].should == @comments
end
end
La solution
Considérez ApplicationController en tant que classe abstraite non destinée à être utilisée pour les demandes. Tous les nouveaux contrôleurs générés hériteront d'ApplicationController, ce qui en fait un endroit agréable pour mettre un comportement partagé.