반응형
RSpec / RoR로 AJAX 요청을 어떻게 테스트합니까?
저는 RoR을 처음 접했고 최근에 애플리케이션 테스트를 위해 BDD / Rspec을 배우기 시작했습니다. AJAX 요청을 지정하는 방법을 찾고 있었지만 지금까지 이것에 대한 문서를 많이 찾지 못했습니다.
누구든지 이것을하는 방법을 알고 있습니까? 내 스텁에 rails 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
배경
ActionController :: TestCase 의 관련 코드는 다음과 같습니다 . xhr
플래그를 설정하면 다음 헤더가 추가됩니다.
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
참조 URL : https://stackoverflow.com/questions/3971268/how-do-you-test-an-ajax-request-with-rspec-ror
반응형
'program tip' 카테고리의 다른 글
Makefile 문제 : 디렉토리 트리에서 .c 파일을 스캔하는 현명한 방법 (0) | 2021.01.10 |
---|---|
Visual Studio에서 코드 개요를 표시하는 방법은 무엇입니까? (0) | 2021.01.10 |
MYSQL은 두 열에서 DISTINCT 값을 선택합니다. (0) | 2021.01.10 |
Fold 및 foldLeft 메서드 차이 (0) | 2021.01.10 |
구조체 메서드에서 필드를 설정하고 가져 오는 방법 (0) | 2021.01.10 |