2009-06-17 4 views
3

Je suis en train d'écrire des tests fonctionnels dans mon application rails et dans le application_controller.rb j'ai ceci:Comment puis-je boucher ou mocker la méthode request.subdomains dans Rails?

before_filter :current_account 
def current_account 
    @current_account ||= Account.find_by_subdomain!(request.subdomians.first) 
end 

Lorsque l'exécution des tests, request.subdomains ne contient pas les sous-domaines valides que je cherche et rend impossible l'exécution de tests fonctionnels.

Est-il possible de terminer la méthode current_account ou de simuler l'objet request.subdomains?

Répondre

5

Dans votre test fonctionnel, vous devriez être en mesure de le faire (en utilisant mocha):

@request.expects(:subdomains).returns(['www']) 
1

Pour moi (et avec Rails 2.3.4), la déclaration correcte est

@controller.request.expects(:subdomains).returns(['www']) 

depuis que je Impossible d'accéder à @request directement.

1
@controller.instance_variable_set(:@request, OpenStruct.new({:subdomains => 'www'})) 

vous pouvez accéder à quoi que ce soit dans le rubis :)

Questions connexes