2016-06-07 17 views
0

Wir schreiben Tests zu einer Rails-Anwendung und wir müssen einen Controller testen, wo wir eine Kopfzeile für fast jede Anfrage übergeben, aber nicht alle.Rails-Tests, haben ein Setup nur für einige Tests

Sie passieren einen Header Einstellung @request.headers['my-header'] = 'my-header-content', aber wir wollen dies nur in einigen Tests tun, nicht alle, so in setup diese Linie aufweist, ist keine Option, aber wir betrachten falsch es 20 oder 30-mal für jeden haben wiederholt Anfrage gemacht.

Wie können wir das erreichen?

Antwort

1

Wenn Sie rspec verwenden sind, können Sie sie in zwei anderen Kontext trennen und machen dann einen before für diesen Kontext:

describe MyController do 
    context 'with specific header' do 
    before :all do 
     @request.headers['my-header'] = 'my-header-content' 
    end 
    end 

    context 'other context' do 
    #Tests without context 
    end 
end 

Wenn Sie minitest verwenden können Sie immer Ihre Tests in Klassen trennen. Machen Sie dann eine Klasse für die spezifische Kopfzeile und eine weitere für die anderen Tests.