2009-09-02 10 views
0

J'écris un plugin qui ajoute une méthode aux contrôleurs et le déclare comme une méthode d'aide. Si cela était fait statiquement (plutôt que par le plug-in), il ressemblerait à quelque chose comme ceci:Comment puis-je déterminer par programme quelles méthodes ont été déclarées comme méthodes "auxiliaires" par un contrôleur dans Rails?

# in RAILS_ROOT/app/controllers/stuffed_animals_controller.rb 
class StuffedAnimalsController < ActionController::Base 

    private 

    def bear 
    'Teddy Bear' 
    end 

    helper_method :bear 

end 

# in RAILS_ROOT/app/views/stuffed_animals/index.html.erb: 
<%= bear -%> 

Il fonctionne très bien. Je veux tester que :some_helper_method est en fait une méthode d'aide, cependant. J'ai essayé ceci:

def test_declared_bear_as_helper_method 
    assert StuffedAnimalsController.helper_methods.include?(:bear) 
end 

Malheureusement, ActionController::Base n'a pas une méthode de classe :helper_methods. Quelqu'un sait où je peux obtenir la liste des choses qu'une classe expose via :helper_method?

Répondre

0

L'a obtenu!

def test_declared_bear_as_helper_method 
    helper = Object.new 
    helper.extend StuffedAnimalsController.master_helper_module 
    assert helper.respond_to?(:bear) 
end 
Questions connexes