2011-02-09 30 views
17

Estoy comenzando con RSpec. Tengo una nueva aplicación de rails 3 que utiliza el subdominio HTTP_ACCEPT_HEADER o la solicitud de 2 letras para establecer el idioma de la aplicación y redirigir en consecuencia. Estoy probando con éxito mi código de redirección usando Cucumber.Configurar encabezados http RSpec 2.4/Rails 3

Ahora quiero escribir las especificaciones de mi controlador y tengo que configurar el subdominio de solicitud antes de mi prueba.

En mis pasos pepino, puedo especificar:

header 'HTTP_HOST', 'es.mysite.local' 
visit '/' 

Pero cuando trato de hacer esto en un archivo de especificaciones

header 'HTTP_HOST', 'es.mysite.local' 
get 'index' 

me sale este error:

Failure/Error: header 'HTTP_HOST', "es.mysite.local" 
LoadError: 
    no such file to load -- action_controller/integration 

¿Alguna pista sobre cómo resolver esto?

Respuesta

30

Prueba esto:

request.env['HTTP_HOST'] = 'es.mysite.local' 
get 'index' 
+0

¡Muchas gracias! Ya lo había intentado, pero ahora me doy cuenta de que otro ejemplo de código estaba llegando primero a mi punto de depuración. – gdelfino

+0

¡Gracias! Funciona hoy con Rails 3.0.7 y me evitó poner urls completas con subdominios en todas partes. –

2

la respuesta anterior es correcta, y en general el nombre de la cabecera debe ser en todos los casquillos, con el prefijo HTTP_, y separados por guiones. Por ejemplo, el "If-Modified-Since" cabecera puede montarse con:

request.env['HTTP_IF_MODIFIED_SINCE'] = Time.now.httpdate 
0

Ajuste de un encabezado HTTP para cada solicitud en rspec es también posible. Agregue a su spec_helper dentro del bloque RSpec.configure do |config|:

config.before(:each) do |x| 
    x.request.env['HTTP_ACCEPT_LANGUAGE'] = 'de-CH,de;q=0.8,en;q=0.6' 
end 
Cuestiones relacionadas