2011-02-09 7 views
17

RSpec을 시작합니다. 나는 응용 프로그램 언어를 설정하고 그에 따라 리디렉션하기 위해 HTTP_ACCEPT_HEADER 또는 요청 2 글자 서브 도메인을 사용하는 새 레일 3 응용 프로그램을 보유하고 있습니다. Cucumber를 사용하여 리디렉션 코드를 테스트하고 있습니다.http 헤더 설정 RSpec 2.4/Rails 3

이제 컨트롤러 사양을 작성하고 테스트하기 전에 요청 하위 도메인을 설정해야합니다.

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

을하지만 스펙 파일에서이 작업을 수행 할 때

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

이 오류 얻을 : 내 오이 단계에서

, 나는 지정할 수 있습니다

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

을 이 문제를 해결하는 방법에 대한 단서가 있습니까?

답변

30

이 시도 :

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

고맙습니다! 이미 시도했지만 다른 코드 예제가 디버그 포인트에 먼저 도달했음을 알게되었습니다. – gdelfino

+0

감사합니다. 그것은 레일스 3.0.7과 함께 작동하며 모든 곳의 하위 도메인에 대한 전체 URL을 입력하지 않아도됩니다. –

2

이전의 대답은 정확하고, 헤더의 이름 HTTP_로 시작하는 모든 모자,에 있어야 일반적으로 밑줄로 구분. "변경시 - - 이후"예를 들어, 헤더가 설정 될 수

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

RSpec에 모든 HTTP 요청에 대한 헤더를 설정하는 것도 가능하다. RSpec.configure do |config| 블록 내 spec_helper에 추가 :

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