RailsのサイトでREST APIをテストしたいと思っています。レールテストフレームワークでこれを行う最も簡単で最善の方法は何ですか?私は標準的な知識豊富なものだけをやっているので、これをテストするための自動化された方法があれば、これは非常に標準的なので、特に私は疑問に思います。REST XML APIをテストする最良の方法は?
答えて
私はCucumberの使用をお勧めします。キュウリはブラウザをエミュレートし、結果を確認することができます。これは、JSONと単純な古いHTMLだけでなく、XMLリクエストに対してもうまく機能します。
手動で作成したAPIをテストする場合は、これを試してみてください。うまくいくように見えます!
REST Client - Simply Test REST APIs
あなたはこのかかわらで自動化されたテストを行うことはできません!
URIがAPIの一部として利用可能な場合、これは実際にはRESTではありません。 RESTfulなAPIにはエントリポイントURIしか存在できません。 – aehlke
これは自動化されていませんが、あなたのAPIが何をしているかを見るのには本当に素晴らしいです。
私は、許可された要求に対してユーザー名/パスワードを与えることに注意します。私は、コードを取得し、その場合に私的使用のためにインストールすることをお勧めします。 https://github.com/defunkt/hurl –
私たちは、Firefoxが訪問するアドオンとテストRESTサービスRESTClientを使用します。
https://addons.mozilla.org/en-US/firefox/addon/9780
我々は数ヶ月のために私のチームでこれを使用していると私たちはそれなしで私たちの仕事をすることができるとは思いません。立ち上がり、走りやすく、使いやすいです。
最新のバージョンをSourceforgeから入手した場合は、他のRESTクライアントで見つけられなかったOauthサポートもあります。 Firefoxのアドオンを使用して、多くの、利点の
http://sourceforge.net/projects/restclient/develop
一つは、それがクロスplattformだということです。異なるOS(Mac、Linux、Windows)を使用していても、チームの全員に同じツール(RESTクライアント)を使用します。
あなたが取得するコントローラでは、サーバ
(1)
curl --form-string "book_key=BOOK1234" --form-string "author=Gandhi" -X PUT 'http://localhost:3000/api/show_all_books_of_a_particular_author?params1=value1¶m2=value2'
にフォームデータを渡すためにcurl
使用--form-string
を試すことができますparams['book_key']=BOOK1234
とparams["author"]="Gandhi"
使用-F "[email protected];type=application/msword;"
(2)
curl -F "[email protected]_experiments_with_truth.pdf;type=application/pdf;" --form-string "author=Gandhi" --form-string "[email protected]" -X PUT 'http://localhost:3000/api/submit_a_pdf_book?params1=value1¶m2=value2'
あなたはparams['email]="[email protected]"
とparams["author"]="Gandhi"
とparams["document"] = "File(object)"
を取得します。これは、test.doc
が現在のディレクトリにある場合にのみ機能します。サーバは"application octet-stream"
と取るかもしれないので、mime-type
を渡すことを忘れて、これを別に処理するコードに書き込む必要があります。
これに私自身の解決策を巻き込んだので、参考になると思いました。私はjson、curb、およびaddressable gem、PUT、POST、およびDELETE要求をlocalhost:3000に送信するモジュールを作成しました。それはXML(元々の質問として)またはjsonを要求することができます。レスポンスボディをハッシュとして返します。これは主に縁石宝石の周りのラッパーですが、私は恐ろしい構文を持っていると思います。
私は自動的にapi_key
を読み込んでいます。これは、を渡すか、api_key => "wrong"
で壊れて無効にすることができます。これをそのままにしたり、認証方式に合わせて変更することができます。ここで
は、モジュールです:
module ApiTesting
# requres the json, curb, and addressable gems
require "addressable/uri"
def api_call(path, verb, query_hash={}, options={})
options.reverse_merge! :api_key => "abc1234", :format => "xml"
query_hash.reverse_merge!({:api_key => options["api_key"]}) if options[:api_key]
query = to_query_string(query_hash)
full_path = "http://localhost:3000/#{path}.#{options[:format]}?#{query}"
response = case verb
when :get
Curl::Easy.perform(full_path)
when :post
Curl::Easy.http_post("http://localhost:3000/#{path}.#{options[:format]}", query)
when :put
Curl::Easy.http_put(full_path, nil)
when :delete
Curl::Easy.http_delete(full_path)
end
case options[:format]
when "xml"
Hash.from_xml(response.body_str)
when "json"
JSON.parse(response.body_str)
end
end
private
def to_query_string(val)
uri = Addressable::URI.new
uri.query_values = val
uri.query
end
end
そして、ここではいくつかの簡単な例は以下のとおりです。 リソース要求は、GETと属性:
api_call("people", :post, {:person => {:first => "Robert", :last => "Smith" } })
更新リソース:
api_call("calls/41", :get)
がPOSTでリソースを作成しますPUT付き:
DELETEとリソースを削除api_call("people/21", :put, {:person => { :first => "Bob" } })
:
api_call("calls/41", :delete)
をAPI_KEYの自動挿入をオフにする:
api_call("calls/41", :get, {}, {:api_key => false})
間違っAPI_KEY使用:JSONとして
api_call("calls/41", :get, {}, {:api_key => "wrong"})
使用(デフォルトはあるがxml):
api_call("calls/41", :get, {}, {:format => "json"})
テスト中にレールが活用できる宝石にこれをロールアップしてみませんか? – masukomi
あなたは間違いなくそれを宝石にする必要があります。よくやった –
- 1. APIのユーザー認証をテストする最良の方法は?
- 2. JavaでREST APIを設計する最良の方法
- 3. REST APIの引数を解析する最も良い方法
- 4. REST APIの単体テストを作成する最良の方法は何ですか?
- 5. クラスタリングアルゴリズムをテストする最良の方法
- 6. リソースの要約表現をリクエストするREST APIの最良の方法は?
- 7. Atom Serverをテストする最良の方法は何ですか?
- 8. nodejsからrest APIを呼び出す最良の方法は何ですか?
- 9. ラムダAPIをセットアップしてテストする最良の方法は何ですか?
- 10. RubyでアプリケーションAPIライブラリをテストする最良の方法は何ですか?
- 11. HATEOASのリンクリレーションシップをXMLで実装する最良の方法は?
- 12. 最良の方法とREST API'S
- 13. C#でREST APIを実装するには良い方法
- 14. Scrapy - REST APIでアイテムをエクスポート/保存する最も良い方法
- 15. PHP複数のRESTとSOAP APIとパースを呼び出す最良の方法
- 16. Advanced REST ClientまたはPostmanでExpress/Node REST APIバックエンドをテストする方法は?
- 17. HTML5ウェブサイトをテストする最良の方法は何ですか?
- 18. javascriptをテストする最良の方法は何ですか?
- 19. MVCリポジトリをテストする最良の方法は何ですか?
- 20. RedirectToActionをテストする最良の方法は何ですか?
- 21. データウェアハウスのパフォーマンスをテストする最良の方法は?
- 22. H2データベースでJPAをテストする最良の方法は?
- 23. リモートXMLのコピーを取得する最も良い方法は?
- 24. REST APIのテスト
- 25. DbContextを使用するリポジトリをテストする最良の方法
- 26. REST APIのテスト中にトークン認証を使用する方法
- 27. Symfony2 - REST APIのテスト中にカスタムヘッダーを取得する方法
- 28. WCFに似たJSON/XML REST Webサービスを作成するための最良のJava方法は何ですか?
- 29. xmlをSQL Serverに転送する最も良い方法は?
- 30. RESTクエリで始まるオプションを含む最良の方法
何らかのツールを使用してURLにテストリクエストをどのように作成できますか?あるいは、何らかの自動化ユニットテストを作成することについて話していますか? – laz