¿Cómo falsificar una búsqueda de subdominio en las pruebas de Rails?
-
06-07-2019 - |
Pregunta
Tengo el siguiente filtro definido:
# 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
y en mi prueba:
# users_controller_test.rb
class UsersControllerTest < ActionController::TestCase
setup do
@request.host = "test.myapp.local"
end
# ...
end
Ahora test
se define como el subdominio de una cuenta ficticia que cargo antes de todas las solicitudes que utilizan factory_girl
. Sin embargo, esto arroja un error de objeto nulo, diciendo que @request es nil. Eliminar el bloque de configuración hace que todas mis pruebas fallen, ya que find_account no puede encontrar una cuenta y, por lo tanto, arroja un error RecordNotFound
.
¿Qué estoy haciendo mal?
Solución
Prueba esto:
@request.env['HTTP_HOST'] = 'test.myapp.local'
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow