ruby-on-rails ruby rspec host hostname

ruby on rails - Pruebas de ruta rspec y hosts



ruby-on-rails hostname (3)

El mismo error ocurre en el mío cuando ejecuto rspec spec/

Todo el error es en realidad:

Failure/Error: @user = Factory(:user) ActionView::Template::Error: Missing host to link to! Please provide the :host parameter, set default_url_options[:host], or set :only_path to true # ./app/views/devise/mailer/confirmation_instructions.html.erb:5:in `_app_views_devise_mailer_confirmation_instructions_html_erb__980323237__638702928'' # ./spec/models/campaign_spec.rb:21

La siguiente línea:

# ./app/views/devise/mailer/confirmation_instructions.html.erb:5:in `_app_views_devise_mailer_confirmation_instructions_html_erb__980323237__638702928''

En realidad, me dio la pista de que el dispositivo es el que arroja el error.

Resulta que no he establecido

config.action_mailer.default_url_options = { :host => ''localhost:3000'' }

en config/environments/test.rb (solo en development.rb)

Agregar la opción de configuración borró los errores en la mía. Sospecho que estás usando otras gemas que requieren el mismo conjunto de opciones.

Veo que puedo probar rutas con rspec así:

get("/").should route_to("welcome#index")

pero tengo restricciones basadas en el nombre de host o partes de nombres de host y redirecciones entre varios. ¿Cómo especifico un nombre de host al probar?

¿Cómo ejecuto las pruebas con la configuración adecuada? Intenté imprimir root_url y obtuve:

Falta el host al que enlazar Por favor proporcione el parámetro: host, establezca default_url_options [: host], o establezca: only_path en true


En mi caso tuve que añadir

config.action_mailer.default_url_options = { :host => ''localhost:5000'' }

a seguir a

config/environments/test.rb

porque estaba usando FactoryGirl para generar un usuario sin omitir la confirmación de correo electrónico del usuario.


Nada de lo anterior funcionó para mí. Al agregar lo siguiente a mi spec_helper.rb (en mi caso spec / support / mailer.rb que se incluye en spec_helper.rb) se corrigió el error:

Rails.application.routes.default_url_options[:host] = ''test.host''