Ich habe folgende Filter definiert:Wie kann man eine Subdomain-Suche in Rails-Tests fälschen?
# 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
und in meinem Test:
# users_controller_test.rb
class UsersControllerTest < ActionController::TestCase
setup do
@request.host = "test.myapp.local"
end
# ...
end
Jetzt test
als Sub-Domain für ein Dummy-Konto definiert, die ich vor mit factory_girl
auf alle Anfragen zu laden. Dies führt jedoch zu einem Null-Objektfehler, da @request gleich Null ist. Das Entfernen des Setup-Blocks führt dazu, dass alle meine Tests fehlschlagen, da find_account kein Konto findet und daher einen RecordNotFound
Fehler ausgibt.
Was mache ich falsch?
Ich habe das gleiche Problem bekam, haben Sie eine Lösung finden? – compostus
Nützlich, um zu finden, dass Sie request_domains verwenden, um Subdomain zu erhalten, ich habe es von params [: subdomain] abgerufen, aber es funktioniert nicht, wenn ich @ request.host oder @ request.env ['HTTP_HOST'] –