0

RubyonRailsは初めてです。rails test:unitを使用してテストケースを作成したサンプルアプリを作成しました。

現在、test:unitを使用してhttpAPI呼び出しをテストする方法を見つけることができません。

モデルには2つのメソッドがあります。1つはAPIからの応答をGETする方法で、もう1つはAPIへのPOSTリクエスト(JSONデータ)を使用する方法です。これが私の方法です

class RestApi def self.reqSecure(apiMethod、qryString)uri = URI.parse( "https://test.my-api.com/test.json?apiKey=abc1234&userId=123456")

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

request = Net::HTTP::Get.new(uri.request_uri)

response = http.request(request)

hashOfResponse = ActiveSupport::JSON.decode(response.body)
return hashOfResponse

終わり

def self.postSecure @host ='localhost' @port = '8099'

@path = "/posts"

@body ={
  "bbrequest" => "BBTest",
  "reqid" => "44",
  "data" => {"name" => "test"}
}.to_json

request = Net::HTTP::Post.new(@path, initheader = {'Content-Type' =>'application/json'})
request.body = @body
response = Net::HTTP.new(@host, @port).start {|http| http.request(request) }
puts "Response #{response.code} #{response.message}: #{response.body}"

エンドエンド

4

1 に答える 1

1

テストが失敗する理由がわからない場合は、:new_passwordとの:confirm_password値が一致していないことが原因である可能性があります。

良い本に関して、私はこれを推薦することができます:http: //pragprog.com/titles/nrtest/rails-test-prescriptionsそれは詳細にテストをカバーし、TDDを学ぶための素晴らしいリソースです。私は実際にTDDを学ぶためにそれを使用しました、そしてそれは私に大いに役立ちました。

それ以来、主に他の2冊の本(http://pragprog.com/titles/achbd/the-rspec-bookとhttp://www.manning.com/katz/)のために、テストにRSpecとCucumberを使用することにしました。 )。

編集:

失敗した状態をテストする場合、投稿後の行は次のようになります。

assert_nil @user
assert_template :change_password

さらに、わかりやすくするために、テスト名はのようにする必要がありますtest_password_change_failure

元のテストの最後の行はそこにあるべきではありません。それは、コントローラーが実行することになっていることではありません。

于 2011-06-20T14:43:39.453 に答える