2016-10-06 35 views
0

我的用例是建立一個內容類型爲json的http請求。例如,我擊中後調用基本身份驗證的端點(認證基本認證也能像ID:BLA,鍵:布拉布拉)和身體例如:我想使用工廠女孩爲特定用例編寫rspec測試

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

,並要檢查響應代碼和響應消息。 有時我不想包括年齡(內部爲必填字段)以查看是否返回了正確的狀態碼。 我想寫我的測試以這樣一種方式,它應該是這樣的:

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

上面的測試應該讓一個HTTP調用和返回響應斷言。 我完全困惑如何爲上述場景創建工廠。我是Rspec的業餘愛好者。

回答

0

您需要傳遞參數以執行POST操作,根據響應狀態代碼您可以聲明api調用是否成功?

你不能在這裏使用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 

參閱:https://www.relishapp.com/rspec/ 爲rspec的

+0

我的請求:'捲曲-X POST -H 「授權:基本dGVzdEFwcDp0ZXN0S2V5」 -H 「內容類型:應用/ JSON」 -d'{ 「age」:「Name」, 「properties」:{ 「age」:21} } }'「http://ab.xyz.com」'。我的回覆將如同'狀態碼200'爲'{ 「接受」:true, 「_itemId」:「133b1921-b569-4b32-9645-26d8e46736c4」 }「。我必須檢查狀態碼是否爲200。我必須使用工廠女孩寫測試。 – Aditya

+0

請求規範應該提出真正的請求。但你可以嘲笑這些迴應。這個答案是一個好的開始 - 如果您將VCR添加到項目中,則可以將其配置爲爲請求返回記錄的響應。請參閱https://github.com/vcr/vcr – zetetic