Comment puis-je modifier ou simuler la méthode request.subdomains dans Rails?
-
05-07-2019 - |
Question
J'essaie d'écrire des tests fonctionnels dans mon application rails et dans le fichier application_controller.rb:
before_filter :current_account
def current_account
@current_account ||= Account.find_by_subdomain!(request.subdomians.first)
end
Lors de l'exécution de tests, request.subdomains
ne contient pas les sous-domaines valides que je recherche et rend impossible l'exécution de tests fonctionnels.
Est-il possible d'arrêter la méthode current_account
ou de simuler l'objet request.subdomains
?
La solution
Dans votre test fonctionnel, vous devriez être capable de faire (en utilisant mocha):
@request.expects(:subdomains).returns(['www'])
Autres conseils
Pour moi (et avec Rails 2.3.4), la déclaration correcte est
@controller.request.expects(:subdomains).returns(['www'])
car je ne peux pas accéder directement à @request.
@controller.instance_variable_set(:@request, OpenStruct.new({:subdomains => 'www'}))
vous pouvez accéder à tout ce qui est en ruby:)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow