source

RSpec/RoR을 사용하여 AJAX 요구를 테스트하려면 어떻게 해야 합니까?

nicesource 2023. 2. 14. 21:31
반응형

RSpec/RoR을 사용하여 AJAX 요구를 테스트하려면 어떻게 해야 합니까?

저는 RoR을 처음 접하는 사람이고 최근 어플리케이션 테스트를 위해 BDD/Rspec을 배우기 시작했습니다.AJAX 요청을 지정할 수 있는 방법을 찾고 있지만, 지금까지 이에 대한 문서를 전혀 찾을 수 없었습니다.

이거 할 줄 아는 사람?스터브에 레일 2.3.8, rspec 1.3.0 및 mocha 0.9.8을 사용하고 있습니다(이것도 학습 중입니다).

컨트롤러 사양 내에서 테스트하는 경우 보통 전화하는 곳

get :index

인덱스 액션에 대한 HTTP 요청을 작성하려면 대신

xhr :get, :index

GET을 사용하여 인덱스액션에 대해 XmlHttpRequest(AJAX) 요구를 발행합니다.

레일 5 / 6

Rails 5.0(RSpec 3.X 사용)에서 설정해 보십시오.xhr: true다음과 같습니다.

get :index, xhr: true

배경

Action Controller의 관련 코드는 다음과 같습니다.: Test Case.의 설정xhrflag는 다음 헤더를 추가합니다.

if xhr
  @request.set_header "HTTP_X_REQUESTED_WITH", "XMLHttpRequest"
  @request.fetch_header("HTTP_ACCEPT") do |k|
    @request.set_header k, [Mime[:js], Mime[:html], Mime[:xml], "text/xml", "*/*"].join(", ")
  end
end

Rails 5 및 rspec > 3.1에 대해 구문이 약간 변경되었습니다(믿을 수 있습니다).

POST 요구의 경우:

post :create, xhr: true, params: { polls: { question: 'some' } }

이제 너는 설명적인 설정이 필요하다.params

GET 요청의 경우:

get :action, xhr: true, params: { id: 10 }

레일 4 및 rspec <= 3.1

xhr post :create, { polls: { question: 'some' } }

GET 요청:

xhr get :show, id: 10

다음으로 완전한 예를 제시하겠습니다.

get "/events", xhr: true, params: { direction: "past" }

언급URL : https://stackoverflow.com/questions/3971268/how-do-you-test-an-ajax-request-with-rspec-ror

반응형