rspec 요청 사양에서 요청 헤더를 설정하려면 어떻게 해야 합니다.
컨트롤러 사양에서는 다음과 같이http accept 헤더를 설정할 수 있습니다.
request.accept = "application/json"
단, 요청 사양에서는 "request" 객체는 0입니다.그럼 여기서 어떻게 하죠?
http accept 헤더를 json으로 설정하는 이유는 다음과 같습니다.
get '/my/path'
이것 대신에
get '/my/path.json'
다음과 같이 get() 메서드의 세 번째 인수로 HTTP 헤더를 지정할 수 있습니다.
http://api.rubyonrails.org/classes/ActionDispatch/Integration/RequestHelpers.html#method-i-get
그리고 여기
http://api.rubyonrails.org/classes/ActionDispatch/Integration/Session.html#method-i-process
다음과 같은 작업을 수행할 수 있습니다.
get '/my/path', nil, {'HTTP_ACCEPT' => "application/json"}
테스트에서 사용:단위:
@request.env['HTTP_ACCEPT'] = "*/*, application/youtube-client"
get :index
Rails 5.1.rc1에서 이 작업을 수행하려다 크게 막혔기 때문에 여기에 추가합니다.
get 메서드의 시그니처가 조금 다릅니다.
경로 뒤에 있는 옵션을 키워드 인수로 지정해야 합니다.
get /some/path, headers: {'ACCEPT' => 'application/json'}
참고로 키워드 인수의 풀세트는 다음과 같습니다.
params: {}, headers: {}, env: {}, xhr: false, as: :symbol
이는 요청 사양이 아닌 컨트롤러 사양으로 작동합니다.
request.headers["My Header"] = "something"
rspec 사용Rack::Test::Methods
header 'X_YOUR_HEADER_VAR', 'val'
get '/path'
헤더 var는 다음과 같이 전달됩니다.X-Your-Header-Var
헤더를 따로 설정해야 합니다.
request.headers["Accept"] = "application/json"
get/delete/...를 통해 전송하려고 하면 rails4에서 완전히 쓰레기가 되어 헤더가 아닌 파라미터로 전송되기 때문에 머리가 아프다.
{"Accept" => "application/json"}
RSpec 3에서는 다음 구문을 사용할 수 있습니다.
get my_resource_path, params: {}, headers: { 'HTTP_ACCEPT' => "application/json" }
공식 Rspec 문서에 기재되어 있는 바와 같이 (링크는 v3.7을 가리키고 있습니다)
둘 다 보내려면xhr: true
헤더, 예를 들어 다음과 같은 작업을 수행해야 했습니다.
my_headers = { "HTTP_ACCEPT": "application/json" }
get my_path, xhr: true, headers: my_headers
질문에 대한 답변은 이미 완료되었지만 다른 액션에 대해 POST를 하려면 다음 절차를 수행해야 합니다.
post :save, {format: :json, application: {param1: "test", param2: "test"}}
다음과 같은 방법을 시도해 보십시오.
get :index, :format => 'json'
언급URL : https://stackoverflow.com/questions/9654465/how-to-set-request-headers-in-rspec-request-spec
'programing' 카테고리의 다른 글
ReactJs - "If" 구성 요소 생성 중...좋은 생각? (0) | 2023.03.18 |
---|---|
JSON을 XML로 변환하거나 XML을 JSON으로 변환하는 방법 (0) | 2023.03.18 |
스프링 부트 - 다른 시스템(eureka, zuul, 리본, nginx 등)은 무엇에 사용됩니까? (0) | 2023.03.18 |
React JS를 사용하여 재료 UI에서 전체 카드 구성 요소를 클릭할 수 있도록 만드는 방법은 무엇입니까? (0) | 2023.03.18 |
json 데이터를 html 테이블로 변환 (0) | 2023.03.18 |