2011-09-11 4 views
3

私は、XMLとWeb応答(APIとWebサイト)の両方を使用するRESTfulサイトを持っています。多くのページがあるので、現在の目標は、RSpecを設定して、両方のデータ形式の各ページを要求し、返されたレスポンスが200かどうかを確認することです。XMLとHTTP 200の両方の応答をチェックする最良の方法は何ですか?私は、私はTDDを前もってやっていなければならないことを知っていますが、今私はこれをシェルとして必要としています。XMLとHTTP応答をテストするRSpecアプローチ

例:私は、任意のサーバーエラー(200 OK)がなかった場合は「/ユーザ」と「/users.xml」とテストの両方を要求したい

+1

RSpecのドキュメントを読んだことがありますか? http://rdoc.info/gems/rspec-rails/2.5.0/framesにはリクエストのテストに関する豊富な情報がありますので、これまでのリサーチを行っていないようです。 – jergason

+1

はい、そこから始めました。私はPragmaticの本を使っています。しかし、私はXMLレスポンスのテストについて何も見ていない。 – beeudoublez

+0

XMLレスポンスが実際に到着したことを確認するか、レスポンスの内容をテストしますか?また、今後の参考のために、「RTFM」タイプの回答を避けるために質問で行った先行研究を投稿することをお勧めします。 :) – jergason

答えて

2

私はtesting JSON APIs with RSpec上のカップルをブログの記事を書きました何週間前。

基本的には、実際のレスポンスを取得して解析し、正しいコンテンツがあることを確認することです。例として:

context "#index (GET /artworks.json)" do 
    # create 30 Artwork documents using FactoryGirl, and do a HTTP GET request on "/artworks.json" 
    before(:each) do 
    30.times { FactoryGirl.create(:artwork) } 
    get "/artworks.json" 
    end 
    describe "should list all artworks" do 
    # the request returns a variable called "response", which we can then make sure comes back as expected 
    it { response.should be_ok } 
    it { JSON.parse(response.body)["results"].should be_a_kind_of(Array) } 
    it { JSON.parse(response.body)["results"].length.should eq 30 } 
    # etc... 
    end 
end 

明らかに簡単な例ですが、うまくいけばいいと思います。私はこれが役立つことを願っています

+0

これは役に立ちました。私は同じことをやってしまい、モックオブジェクトを作成して、渡されたモックオブジェクトが返されたJSONと一致するかどうかをテストしました – beeudoublez