Nenhuma rota corresponde erro com application_controller especificação
-
05-07-2019 - |
Pergunta
Eu tenho uma especificação application_controller que está falhando desde que eu removido o controlador / route ação routes.rb. Eu recebo o seguinte erro:
No route matches {:controller=>"application", :action=>"index"}
Eu tive muitos testes falham da mesma forma, mas foi capaz de corrigi-los, incluindo os parâmetros corretos na chamada get. Assim, por exemplo, se eu quisesse obter o route show padrão para mensagens no meu spec, eu tive que mudar
get :show to get :show, :id => '1'
Infelizmente, eu não tenho certeza agora que passar ao longo das especificações do controlador de aplicação. Eu incluí meu teste abaixo.
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
Solução
Considere o ApplicationController como uma classe abstrata não se destina a ser utilizado para solicitações. Todos os novos controladores gerado irá herdar de ApplicationController por isso é um bom lugar para colocar o comportamento compartilhado.