J'essaie de tester la sortie d'une vue auxiliaire qui réside dans un espace de noms. L'assistant d'origine se trouve sous app/helpers/admin/events_helper.rb. Le test est à spec/assistants/admin/events_helper_spec.rb et ressemble à ceci (simplifié):Comment puis-je forcer un espace de noms pour un assistant à l'intérieur d'une spécification?
require File.dirname(__FILE__) + '/../../spec_helper'
describe Admin::EventsHelper do
fixtures :events, :users
before(:each) do
@event = events(:one)
@user = users(:one)
end
it "should include link to admin page for user" do
html = helper.event_message(@event)
html.should have_selector("a", :href => admin_user_path(@user))
end
end
L'aide, ridiculement simplifiée, ressemble à ceci:
module Admin::EventsHelper
def event_message(event)
link_to(
event.message,
:controller => 'users', :action => 'show', :id => event.user.id)
end
end
Lorsque la méthode est event_message Appelé à partir d'un contrôleur dans l'espace de noms Admin, il rend le lien comme '/ admin/users /: id' comme prévu. Cependant, appelé à partir de la spécification, il s'affiche sous la forme '/ users /: id', ce qui fait échouer le test.
Comment spécifier l'espace de noms correct à utiliser pour l'assistant dans la spécification?
Merci!
Cela fonctionne, merci. Le paramètre _path_segment est le seul dont j'ai besoin, en fait. À votre santé. – Thilo
Fait intéressant, "admin/user" fonctionne même pour d'autres ressources sous l'espace de noms d'administration. Juste pour rire, je l'ai remplacé par "admin/foo", et ça marche toujours. Donc, je suppose que tout ce qu'il fait est de dire au contrôleur d'utiliser l'espace de noms admin lors de la génération des routes - juste ce que je voulais. – Thilo