私はsinatraを使って基本的なREST APIを書いています。REST API用のRubyで単体テストを書く
誰でもテストのための最良の方法を知っていますか?私はRubyを使ってそうしたいと思います。
私はカールを使って私の初期テストを行った。しかし、もっと頑丈なことをしたいと思います。これは私の最初のAPIです - テストする必要のあるものは何ですか?
私はsinatraを使って基本的なREST APIを書いています。REST API用のRubyで単体テストを書く
誰でもテストのための最良の方法を知っていますか?私はRubyを使ってそうしたいと思います。
私はカールを使って私の初期テストを行った。しかし、もっと頑丈なことをしたいと思います。これは私の最初のAPIです - テストする必要のあるものは何ですか?
多くはキュウリは本当に多くのアプリケーションや受け入れテストではなく、ユニットテストで使用し、それはHTTPヘッダを作成し、httpを形成するためのアプローチが含まれていないことを言うかもしれないが、あなたがこのアプローチhttp://anthonyeden.com/2013/07/10/testing-rest-apis-with-cucumber-and-rack.html
を見ているかもしれません私が推測している要求は、あなたが立ち往生している場所であろうか?
個人的に私が問題になることはありません。あなたが本当に単体テストをしようとしている場合は、APIが話している可能性のあるコード単位をモックする必要があります。データ)
デベロッパーではないQAの男として見て、私はキュウリを使用してそのレベルでテストすることに満足していますが、devs単体テスト時にも大いに感謝します。 rSpecではCukeの代わりに、 'rack test'のヒントが役に立つでしょう。
そのリンクは現在死んでいる、それは404を返します –
彼のワードプレスのサイトがハックされたようにええ、彼は新しい家http:// anthonyedenを設定しているようです。この時点であなたはおそらく彼に連絡してみるか、上記の回答を掲示した時点でそのサイトがどのように見えるかをインターネットタイムマシンの1つを使って試してみる必要があります。 –
はリンクを修正しました。他のよく意味のある人が編集しようとしましたが、馬鹿の査読者は明らかにそれが変更の小さすぎると思っていました。個人的には、動作していないリンクを作業リンクに修正することは、私にとっては小さいようではありません。 –
意見の問題です:)個人的には、私はシンプルで清潔です。 minitest、Watir、rest-clientなどのツールを使用すると、RESTインターフェイスと、実際のブラウザ(すべての主要なブラウザがサポートされています)を通じてWebサービスをテストするという非常に簡単なテストを組み合わせることができます。
#!/usr/bin/ruby
#
# Requires that you have installed the following gem packages:
# json, minitest, watir, watir-webdrive, rest-client
# To use Chrome, you need to install chromedriver on your path
require 'rubygems'
require 'rest-client'
require 'json'
require 'pp'
require 'minitest/autorun'
require 'watir'
require 'watir-webdriver'
class TestReportSystem < MiniTest::Unit::TestCase
def setup
@browser = Watir::Browser.new :chrome # Defaults to firefox. Can do Safari and IE too.
# Log in here.....
end
def teardown
@browser.close
end
def test_report_lists # For minitest, the method names need to start with test
response = RestClient.get 'http://localhost:8080/reporter/reports/getReportList'
assert_equal response.code,200
parsed = JSON.parse response.to_str
assert_equal parsed.length, 3 # There are 3 reports available on the test server
end
def test_on_browser
@browser.goto 'http://localhost:8080/reporter/exampleReport/simple/genReport?month=Aug&year=2012'
assert(@browser.text.include?('Report for Aug 2012'))
end
end
スクリプトを実行するだけでテストケースを実行します。 Ruby用の他の多くのテストシステムとRESTクライアントがあり、同様の方法で動作させることができます。あなたが住んでいるAPI、またはシナトラ、ブドウ、Railsアプリケーションに対してどちらかに対してテストすることができます
https://github.com/brooklynDev/airborne
:
あなたは、この目的のために書かれたフレームワークがあるairborne
を使用して試すことができます。
カールには何が問題なのですか?あなたはカールを実行するユニットテストを書くことができ、あなたが期待しているもの、つまりヘッダとボディを返すことを確認できます。それ以外の場合は、http://watir.com/のようなものを検討するかもしれませんか? – iain
@lain:Watirを使用するか、カールは単体テストではありません。一般的には、それは機能テストか統合テストです。 – Chamnap
ユニットテストでは、外部からではなくコード内*の機能単位をテストしています。カールやそれ以外のものを使用してコードを調べています。単体テストで役立つWebサービスの詳細を知る必要があります。 –