[RUBY-ON-RAILS] 어떻게 레일에서 시험하기위한 기본 "www.example.com"도메인을 변경하려면 어떻게해야합니까?
RUBY-ON-RAILS어떻게 레일에서 시험하기위한 기본 "www.example.com"도메인을 변경하려면 어떻게해야합니까?
내가 다른이에 액세스 무슨 도메인에 따라 역할을하는 레일 응용 프로그램이 (user.myapp.com 다르게 호출합니다 예를 www.myapp.com에 대한). 생산 사용이 모두 잘 작동하지만 내 테스트 코드는 항상 "www.example.com"의 호스트 이름을 본다.
테스트가 액세스 척하는 것 호스트 이름을 지정 갖는 깨끗한 방법이 있나요?
해결법
-
==============================
1.
@request.host = 'user.myapp.com'
-
==============================
2.나는 모든 대답은 ... 불완전 여기에 가능한 모든 경우를 열거 할 생각 :
나는 모든 대답은 ... 불완전 여기에 가능한 모든 경우를 열거 할 생각 :
-
==============================
3.기능 사양에서, 호스트! 더 이상 사용되지 않습니다. 당신의 spec_helper.rb에 다음을 추가합니다 :
기능 사양에서, 호스트! 더 이상 사용되지 않습니다. 당신의 spec_helper.rb에 다음을 추가합니다 :
# Configure Capybara expected host Capybara.app_host = "http://test.domain" # Configure actual routes host during test before(:each) do default_url_options[:host] = <myhost> end
요청 사양에서 호스트를 계속 사용! :
host! "test.domain"
(각) 블록, 또는 spec_helper.rb 수준의 요구 사양에 대한 글로벌 구성을 대안으로 전에 그것을 리팩토링 :
RSpec.configure do |config| config.before(:each, type: :request) do host! "test.domain" end end
-
==============================
4.기억해야 할 또 다른 것은 당신이 제대로 URL 헬퍼를 캡슐화 할 수 있도록 올바른 세션 인스턴스를 사용할 수 있는지 확인하는 것입니다.
기억해야 할 또 다른 것은 당신이 제대로 URL 헬퍼를 캡슐화 할 수 있도록 올바른 세션 인스턴스를 사용할 수 있는지 확인하는 것입니다.
통합 테스트는 기본 세션을 제공합니다. 당신은 당신의 테스트에서 직접 모든 세션 메서드를 호출 할 수 있습니다
test "should integrate well" do https! get users_path assert_response :success end
이러한 모든 헬퍼 변경하지 않을 경우 기본 세션 인스턴스를 사용하고있다 "www.example.com"로 이동합니다. 언급 한 바와 같이 호스트는 호스트를 수행하여 변경할 수 있습니다! ( "my.new.host")
당신이 open_session 방법을 사용하여 여러 세션을 작성하는 경우, 당신은 항상 도우미 메서드를 호출 할 해당 인스턴스를 사용해야합니다. 이 적절하게 요청을 캡슐화합니다. 그렇지 않으면 다른 호스트를 사용할 수있는 기본 세션 인스턴스를 호출 레일 :
test "should integrate well" do sess = open_session sess.host! "my.awesome.host" sess.get users_url #=> WRONG! will use default session object to build url. sess.get sess.users_url #=> Correctly invoking url writer from my custom session with new host. sess.assert_response :success end
기본 세션 객체를 사용하고자한다면, 당신은뿐만 아니라 해당 호스트를 변경해야합니다 :
test "should integrate well" do sess = open_session sess.host! "my.awesome.host" host! sess.host #=> Set default session host to my custom session host. sess.get users_url end
-
==============================
5.RSpec에 요청 사양의 경우, 사용하기 전에 (각) {호스트! 'example.com'}
RSpec에 요청 사양의 경우, 사용하기 전에 (각) {호스트! 'example.com'}
더에서보기 : https://relishapp.com/rspec/rspec-rails/v/3-6/docs/request-specs/request-spec https://github.com/rspec/rspec-rails/issues/1662#issuecomment-241201056
-
==============================
6.난 당신이 HTTP_HOST 또는 SERVER_NAME 환경이 라우터로 이동 요청을 변경 바르 수정할 수 있다고 생각합니다 :
난 당신이 HTTP_HOST 또는 SERVER_NAME 환경이 라우터로 이동 요청을 변경 바르 수정할 수 있다고 생각합니다 :
ENV['SERVER_NAME'] = "user.myapp.com"
raw_host_with_port에서 actionpack / lib 디렉토리 / action_controller / request.rb 참조하십시오.
-
==============================
7.@ request.host = '는 user.myapp.com'옳지 않다. 호스트를 사용한다! ( 'user.myapp.com')
@ request.host = '는 user.myapp.com'옳지 않다. 호스트를 사용한다! ( 'user.myapp.com')
-
==============================
8.I 제어기 테스트 및 기능 테스트와 모두 성공하지 request.host @ 호스트 !, 포스트 경로 인수 { 'SERVER_NAME'=> my_secret_domain} 많은 변화를 시도했다. 매우 악화, 그래서 많은 사람들이 그 접근 방법과 성공을보고했다.
I 제어기 테스트 및 기능 테스트와 모두 성공하지 request.host @ 호스트 !, 포스트 경로 인수 { 'SERVER_NAME'=> my_secret_domain} 많은 변화를 시도했다. 매우 악화, 그래서 많은 사람들이 그 접근 방법과 성공을보고했다.
나를 위해이 솔루션은 있었다 :
request.headers["SERVER_NAME"] = my_secret_domain post path, args
나는 루비 2.1.5p273, RSpec에 3.1.7 및 레일 4.2.0을 실행하는거야
-
==============================
9.방법 중 아무도 나를 위해 일한 지점에서 다른 답변에서 제안합니다. 이것은 일 :
방법 중 아무도 나를 위해 일한 지점에서 다른 답변에서 제안합니다. 이것은 일 :
Capybara.configure { |config| config.default_host = "my.domain.com" }
-
==============================
10.또 다른 답 :
또 다른 답 :
request.host = "user.myapp.com"
나는 그것이 정답과 유사 알고 있지만, 나와 함께 곰하시기 바랍니다. 저는 명시 적 스텁을 선호하는 것, 최대 단지 일련의 일에 시험에 할당 작업을 좋아하지 않는다. 흥미롭게도,이 같은 스텁은 작동하지 않습니다 :
allow(request).to receive(:host).and_return("user.myapp.com")
나는 개인적으로이 혜택을받을 그 방법은, 하나는 두 번째,이 RSpec에의 두 배 베리 파이 유효성을 검사 할 것입니다 명시 적으로 그 그루터기, 시험 훈련의 일부입니다 말하는 것입니다, 할당을 통해 스텁 선호합니다.
from https://stackoverflow.com/questions/598933/how-do-i-change-the-default-www-example-com-domain-for-testing-in-rails by cc-by-sa and MIT license
'RUBY-ON-RAILS' 카테고리의 다른 글
[RUBY-ON-RAILS] 만들기는 외부 URL에 경로를 레일 (0) | 2020.02.19 |
---|---|
[RUBY-ON-RAILS] 브라우저 감지 방법 레일 (0) | 2020.02.19 |
[RUBY-ON-RAILS] has_many와 counter_cache : 통해 (0) | 2020.02.19 |
[RUBY-ON-RAILS] 많은 자기에 많은 참여 레일 (0) | 2020.02.19 |
[RUBY-ON-RAILS] 어떻게 레일에 date_select 또는 select_date에서 날짜를 얻으려면? (0) | 2020.02.19 |