J'ai le filtre suivant défini:Comment truquer une recherche de sous-domaine dans les tests Rails?
# 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 pour un compte fictif que je charge avant toutes les demandes en utilisant factory_girl
. Cependant, cela génère une erreur d'objet nulle, indiquant que @request est nul. La suppression du bloc d'installation entraîne l'échec de tous mes tests car find_account ne trouve pas de compte et déclenche donc une erreur RecordNotFound
.
Qu'est-ce que je fais mal?
J'ai le même problème, avez-vous trouvé une solution? – compostus
Utile pour trouver que vous utilisez request.subdomains pour obtenir un sous-domaine, je l'ai utilisé depuis params [: subdomain] mais cela ne fonctionne pas si je mets @ request.host ou @ request.env ['HTTP_HOST'] –