3 votes

rspec n'appelle pas mon action personnalisée sur un contrôleur rails 3 namespace ?

J'ai un problème pour tester un contrôleur d'administration rails 3. il semble que l'action du contrôleur ne soit même pas appelée. j'ai testé cela en faisant en sorte que l'action lève explicitement une exception, et le test ne montre pas ce fait.

avec le code suivant, mon test passe. l'exception devrait faire échouer le test si l'action my_custom_action était réellement appelée.

controllers/admin/things_controller.rb

class Admin::ThingsController < Admin::AdminController
  def my_custom_action
    raise 'this should be bad'
  end
end

spec/controllers/admin/things_controller_spec.rb

describe Admin::ThingsController do
  it "shouldn't work!" do
    post :my_custom_action
  end
end 

config/routes.rb

namespace :admin do
  resources :things do
    post :my_custom_action, :on => :collection
  end
end

à chaque fois que je supprime la route, le test échoue avec une erreur "no matching route". Je ne comprends pas pourquoi il semble que l'action ne soit pas appelée lorsque la route est définie.

Qu'est-ce qui me manque pour tester les routes de l'espace de nom via rspec ?

0voto

sergeych Points 326

Les exceptions lancées et non capturées dans le processus du contrôleur (serveur) ne sont pas relancées par défaut du côté de rspec. En général, vous devez vérifier la réponse (qui n'est pas 200 ok dans ce cas) :

post :something_wrong
response.should be_ok

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X