2

私はAPIラッパーを作成していて、そのためのテストをいくつか書いています。いくつか質問があります。

assert1)データが存在しないfor呼び出しを作成するにはどうすればよいですか?たとえば、APIを使用してIDでメンバーを検索しますが、ユーザーはまだ存在しません。2)テストとリクエスト
のためにを書くにはどうすればよいですか?assertPUTDELETE

私はすでにテストGETPOST要求を把握しており、他の2つの動詞についてはよくわかりません。

4

1 に答える 1

2

あなたの質問パート1について...

存在しないデータにはいくつかの選択肢があります。

  1. たとえば、テストシードファイル、フィクスチャ、またはファクトリを使用して、事前にデータを作成できます。より洗練されたデータ配置を備えた大規模なプロジェクトでは、この選択が好きです。また、データを確認する方が簡単なので、最初に機能させるためのこの選択も気に入っています。

  2. スタブメソッドや偽のオブジェクトなどのテストダブルを作成できます。最速のテストパフォーマンスと最高の分離のために、この選択が好きです。最速のテストのために、私はできるだけ早く通話を傍受します。トレードオフは、私がエンドツーエンドのテストを行っていないことです。

あなたの質問パート2について...

質問を編集して、実際のコードを表示する必要があります。これは、ここの人々があなたに答えるのに役立ちます。

あなたのVCRコードはこのようなものですか?

VCR.use_cassette('test_unit_example') do
  response = Net::HTTP.get_response('localhost', '/', 7777)
  assert_equal "Hello", response.body
end

その場合、次のようにHTTPgettoputを変更します。

uri = URI.parse(...whatever you want...)
json = "...whatever you want..."
req = Net::HTTP::Put.new(uri)
req["content-type"] = "application/json"
req.body = json
request(req)

HTTP削除についても同じです。

Net::HTTP::Delete.new(uri)

良いブログ投稿は、ここから抜粋したhttp://www.rubyinside.com/nethttp-cheat-sheet-2940.html> Net::HTTPチートシートです。

# Basic REST.
# Most REST APIs will set semantic values in response.body and response.code.
require "net/http"

http = Net::HTTP.new("api.restsite.com")

request = Net::HTTP::Post.new("/users")
request.set_form_data({"users[login]" => "quentin"})
response = http.request(request)
# Use nokogiri, hpricot, etc to parse response.body.

request = Net::HTTP::Get.new("/users/1")
response = http.request(request)
# As with POST, the data is in response.body.

request = Net::HTTP::Put.new("/users/1")
request.set_form_data({"users[login]" => "changed"})
response = http.request(request)

request = Net::HTTP::Delete.new("/users/1")
response = http.request(request)
于 2013-01-30T21:42:21.620 に答える