2009-02-19 3 views
2

Je teste mes rails méthodes d'aide comme celui-ci:méthodes d'assistance d'essai dans Rails

require File.dirname(__FILE__) + '/../../test_helper' 
require 'action_view/test_case' 
require 'action_view/helpers' 

class ListingsHelperTest < ActionView::TestCase 

    def setup 
    @controller = ListingsController.new 
    @request = ActionController::TestRequest.new 
    @response = ActionController::TestResponse.new 
    end 
end 

Cela fonctionne très bien, sauf si les aides font appel à des méthodes qui nécessitent une demande d'arrivé, comme url_for . Puisque je ne veux pas exécuter la pile entière à travers un processus de demande pour tester ces derniers (par exemple en appelant get: index), qu'est-ce qui devrait être initialisé ou écrasé pour que cela fonctionne?

Je suis à la recherche d'une solution plus générale pour se moquer d'une demande, mais plus précisément, l'erreur que je reçois est ceci:

NoMethodError: You have a nil object when you didn't expect it! 
The error occurred while evaluating nil.rewrite 
rails/actionpack/lib/action_controller/base.rb:625 
rails/actionpack/lib/action_view/helpers/url_helper.rb:85 
rails/actionpack/lib/action_view/helpers/url_helper.rb:85 

Répondre

4

Je pense que:

include ActionView::Helpers::UrlHelper 
include ActionController::UrlWriter 

pourrait aider ?

+0

Voilà le billet, merci! Je viens juste de réaliser que cette technique serait probablement visible dans les propres tests d'assistance des rails, non? –

Questions connexes