Comment simuler une recherche de sous-domaine dans les tests Rails?
-
06-07-2019 - |
Question
J'ai défini le filtre suivant:
# application_controller.rb
class ApplicationController < ActionController::Base
before_filter :find_account
private
def find_account
@current_account = Account.find_by_subdomain!(request.subdomains.first)
end
end
et dans mon test:
# users_controller_test.rb
class UsersControllerTest < ActionController::TestCase
setup do
@request.host = "test.myapp.local"
end
# ...
end
Maintenant, test
est défini comme le sous-domaine d'un compte factice que je charge avant toutes les demandes à l'aide de factory_girl
. Cependant, cela renvoie une erreur d'objet nil, en disant que @request est nil. La suppression du bloc d'installation provoque l'échec de tous mes tests car find_account ne peut pas trouver de compte et génère donc une erreur RecordNotFound
.
Qu'est-ce que je fais de travers?
La solution
Essayez ceci:
@request.env['HTTP_HOST'] = 'test.myapp.local'
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow