2013-07-06 14 views
6

Io uso rspec, capybara. Ho impostato locale da un'intestazione HTTP come nel muggitoCome posso impostare l'intestazione http per tutte le funzioni capybara

before_filter :set_locale 

    def extract_locale_from_accept_language_header 
    request.env['HTTP_ACCEPT_LANGUAGE'].scan(/^[a-z]{2}/).first 
    end 

    def set_locale 
    return I18n.locale = current_user.locale if user_signed_in? 
    I18n.locale = extract_locale_from_accept_language_header || I18n.default_locale 
    end 

Quando eseguo la mia prova caratteristica ottengo l'errore 'metodo undefined scan per NilClass'. Apparentemente capybara non imposta le intestazioni http.

Come posso impostare l'intestazione http per tutte le mie funzionalità o evitarla in un altro modo?

+0

forse questo potrebbe ispirare: https://gist.github.com/raul/717819 – apneadiving

risposta

11

a seconda del driver del browser, è possibile impostare le intestazioni a livello globale in questo modo:

Capybara.current_session.driver.headers = { 'Accept-Language' => 'de' } 
    Capybara.current_session.driver.header('Accept-Language', 'de') 
+0

Non sembra a 'bastone' a tutti caratteristiche e scenari. Qualche idea del perché? –

+0

sì. dove lo stai configurando? – phoet

+0

In 'spec_helper.rb' che è incluso in ogni file di funzionalità. –

Problemi correlati