2012-05-09 2 views
6

URL 도우미 (예 : root_url)는 앱 컨트롤러와 rspec 예에서 다른 호스트 이름을 반환합니다. 내가 성공적으로 내 레일에 URL을 도우미에 대한 도메인을 설정 할 수 있었다 이렇게되는 앱 : 응용 프로그램 내레일 : rspec의 URL 도우미에 대한 잘못된 호스트 이름

예를 들어
class ApplicationController < ActionController::Base 
    def default_url_options 
    {host: "foo.com", only_path: false} 
    end 
end 

, root_url 출력을 "http://foo.com/을"하지만 "HTTP ://example.com "내 요청 사양. 이러한 URL 옵션을 레일 3.2에 적용하여 내 스펙에 영향을 줄 수있는 권장 방법은 무엇입니까? url 옵션은 동적 일 필요는 없습니다.

답변

4

에서 다음과 같이 보일 것이다 댄의 대답에 추가 할 호스트! 사용되지 않습니다. 당신의 rspec_helper.rb 이러한 추가 : 내가 컨트롤러 테스트 및 기능 테스트로 모두 성공하지 @request.host, host!post path, args, {'SERVER_NAME' => my_secret_domain}의 많은 변화를 시도

# Configure Capybara expected host 
Capybara.app_host = 'http://lvh.me:3000' 

# Configure actual routes host during test 
before(:each) do 
    if respond_to?(:default_url_options) 
    default_url_options[:host] = 'http://lvh.me:3000' 
    end 
end 
+0

참고 : 테스트가 controller/request/feature가 아니면 참고하십시오. 예를 들어 Helper 사양은 '정의되지 않은 로컬 변수 또는 메서드 default_url_options'로 실패합니다. – typeoneerror

2

당신은 RSpec에에서 테스트에서 블록 전에에서 호스트를 설정할 수 있습니다

before :each do 
     host! 'hostgoeshere.com' 
    end 

당신은 세계적으로 당신이 뭔가를 귀하의 spec_helper.rb 파일을 넣을 수를 설정합니다.

+0

당신에 대해 더 구체적으로 할 수 무엇을 "무엇인가"수도 있다? – denishaskin

4

은 그냥이 기능 사양에 spec_helper.rb

RSpec.configure do |config| 
    # other config options 
    config.before(:each) do 
    host! "localhost:3000" 
    end 
end 
+0

spec_helper에서 나를 위해 작동하지 않습니다 : NoMethodError : 정의되지 않은 메서드'host! '. 나는 Rspec 3.2를 사용하고있다. –

0

. 매우 많은 사람들이 그러한 접근 방식으로 성공을보고 했으므로 매우 악화되었습니다.

나를 위해이 솔루션은이었다

request.headers["SERVER_NAME"] = my_secret_domain 
post path, args 

내가 RSpec에, 3.1.7 및 레일 루비 2.1.5p273을 실행하는거야 4.2.0

관련 문제