2011-02-09 5 views
17

Inizio con RSpec. Ho una nuova app per rails 3 che utilizza HTTP_ACCEPT_HEADER o il sottodominio 2 lettere di richiesta per impostare la lingua dell'applicazione e il reindirizzamento di conseguenza. Sto testando con successo il mio codice di reindirizzamento usando Cucumber.Impostazione di intestazioni http RSpec 2.4/Rails 3

Ora voglio scrivere le specifiche del mio controller e ho bisogno di impostare il sottodominio della richiesta prima del mio test.

Nei miei passi cetriolo, posso specificare:

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

Ma quando provo a fare questo in un file di specifica

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

ottengo questo errore:

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

Qualche idea su come risolvere questo?

risposta

30

Prova questo:

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

Grazie mille! L'avevo già provato, ma ora mi rendo conto che un altro esempio di codice stava raggiungendo prima il mio punto di debug. – gdelfino

+0

Grazie! Funziona oggi con Rails 3.0.7 e mi ha evitato di inserire URL completi con sottodomini ovunque. –

2

La risposta precedente è corretta, e, in generale, il nome dell'intestazione deve essere tutto maiuscolo, preceduti HTTP_, e separato con caratteri di sottolineatura. Ad esempio, il "If-Modified-Since" può essere impostato con:

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

Impostazione di un'intestazione HTTP per ogni richiesta in rspec è anche possibile. Aggiungi al tuo spec_helper all'interno del blocco 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