2013-07-06 21 views
6

Ich benutze rspec, Capybara. Ich setze locale von HTTP-Header, wie in untenWie kann ich HTTP-Header für alle Capybara Funktionen

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 

Wenn ich meine Funktion Testlauf-I-Fehler 'undefined Methode scan für NilClass' bekommen. Anscheinend Capybara nicht HTTP-Header setzen.

Wie kann ich HTTP-Header für alle meine Funktionen festlegen oder dies auf andere Weise vermeiden?

+0

vielleicht könnte dies inspirieren: https://gist.github.com/raul/717819 – apneadiving

Antwort

11

je nach verwendetem Browser-Treiber können Sie Header gesetzt global wie folgt aus:

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

Es scheint nicht zu 'Stock' zu allen Funktionen und Szenarien. Irgendeine Idee warum? –

+0

ja. Wo konfigurierst du es? – phoet

+0

In 'spec_helper.rb', das in jeder Feature-Datei enthalten ist. –