2016-10-06 2 views
0

내 용도는 컨텐츠 유형이 json 인 http 요청을 작성하는 것입니다. 예를 들어 내가 기본 인증과 포스트 전화와 엔드 포인트에 충돌 (인증 기본 인증은 ID처럼 될 수있다 : 즐, 키 : blabla)과 몸이, 예를 들면 :특정 유스 케이스에 대해 공장 소녀를 사용하여 rspec 테스트를 작성하려고합니다.

{ "age":"Name", "properties":{ "age":21} }

및 응답 코드를 검사해야 및 응답 메시지. 때로는 적절한 상태 코드가 반환되는지 확인하기 위해 나이 (내부적으로 필수 필드)를 포함하고 싶지 않습니다. 나는이 같아야하는 방식으로 내 테스트를 작성하려면 :

it 'some test' do 
    response = create(:event) 
    expect(response.code).to eq(200) 
    end 

위의 테스트는 HTTP 호출을하고 주장하는 응답을 반환해야합니다. 위 시나리오의 팩토리를 만드는 방법을 완전히 혼란 스럽습니다. 나는 Rspec와 아마추어입니다.

답변

0

API 호출이 성공했는지 여부를 확인할 수있는 응답 상태 코드를 기반으로 POST 작업을 수행하는 매개 변수를 전달해야합니까?

여기 factorygirl을 사용할 수 없습니다. 예를 들어

:

require "rails_helper" 

RSpec.describe "Widget management", :type => :request do 

    it "creates a Widget" do 
    headers = { 
     "ACCEPT" => "application/json",  # This is what Rails 4 accepts 
     "HTTP_ACCEPT" => "application/json" # This is what Rails 3 accepts 
    } 
    post "/widgets", { :widget => {:name => "My Widget"} }, headers 

    expect(response.content_type).to eq("application/json") 
    expect(response).to have_http_status(:created) 
    end 

end 

은 참조 : RSpec에

+0

내 요청에 대한 https://www.relishapp.com/rspec/ :'컬 -X POST -H "권한 부여 : 기본 dGVzdEFwcDp0ZXN0S2V5"-H "콘텐츠 형식 : 응용 프로그램/JSON" -d '{ "나이": "이름", "속성": { "나이": 21} } } ""http://ab.xyz.com ". 내 응답은'{ "accepted": true, "_itemId": "133b1921-b569-4b32-9645-26d8e46736c4" } "상태 코드 200과 같습니다. 상태 코드가 200인지 확인해야합니다. 나는 공장 여자를 사용하여 테스트를 작성해야한다. – Aditya

+0

요청 사양은 실제 요청을해야합니다. 그러나 응답을 조롱 할 수 있습니다. 이 답변은 좋은 시작입니다. VCR을 프로젝트에 추가하면 요청에 대해 기록 된 응답을 반환하도록 VCR을 구성 할 수 있습니다. https://github.com/vcr/vcr을 참조하십시오. – zetetic

관련 문제