2016-10-06 4 views
0

私の使用目的は、コンテンツタイプがjsonであるhttpリクエストを構築することです。例えば、私は基本認証とポストコールでエンドポイントを打つ(認証は、基本認証は、IDのような可能性がある:BLA、キー:blabla)とボディは、例えば、次のとおりです。私は特定の用途のために工場の女の子を使ってrspecテストを書いています

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

と応答コードをチェックする必要が応答メッセージ。 時には、適切なステータスコードが返されるかどうかを調べるために年齢(必須フィールドを内部的に)を含めたくない場合もあります。 私はそれはのようになりますように私のテストを書きたい:上記のテストは、HTTP呼び出しを行うと主張する応答を返すべき

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

。 上記のシナリオ用のファクトリを作成する方法が完全に混乱しています。私は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 "のContent-Type:アプリケーション/ 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

関連する問題