Come falsificare una ricerca di un sottodominio nei test di Rails?
-
06-07-2019 - |
Domanda
Ho il seguente filtro definito:
# 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
e nel mio test:
# users_controller_test.rb
class UsersControllerTest < ActionController::TestCase
setup do
@request.host = "test.myapp.local"
end
# ...
end
Ora test
è definito come sottodominio di un account fittizio che carico prima di tutte le richieste utilizzando factory_girl
. Tuttavia, questo genera un errore oggetto nullo, dicendo che @request è zero. La rimozione del blocco di installazione causa il fallimento di tutti i miei test poiché find_account non riesce a trovare un account e pertanto genera un errore RecordNotFound
.
Cosa sto sbagliando?
Soluzione
Prova questo:
@request.env['HTTP_HOST'] = 'test.myapp.local'
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow