2011-06-07 79 views
2

我有一些代碼在我的Ruby on Rails項目如下,以獲得非軌API的HTTP響應需要幫助的在書面方式模擬的RSpec

應用程序/模型/ rest_api.rb

require "uri" 
require "net/https" 
require "net/http" 
require "active_support" 
class RestApi 
    # the URL for the Twitter Trends endpoint 
    @url = 'http://api.twitter.com/1/trends.json' 

    def self.sampleRes 
    uri = URI.parse(@url) 
    request = Net::HTTP::Get.new(uri.request_uri) 
    response = http.request(request) 
    return response 
    end 
end 

我剛纔開始學習Ruby on Rails和RSPEC。是否有人可以幫助我如何能寫的RSpec的HTTP請求,而不實際做出請求實際API URL(需要一些模擬)

回答

3

可以模擬出請求的一部分,並就應該叫什麼等等

預期
mock_req = double("http request") 
mock_req.should_receive(:request) 
Net::HTTP::Get.should_receive(:new).and_return(mock_req) 

您的代碼也可以簡化爲:

open('http://api.twitter.com/1/trends.json').read 

你沒有做任何錯誤處理,狀態檢查等(也許這是示例代碼?),但是,無論你希望你的請求返回你應該嘲笑/剔除那些期望。

+0

嗨, 感謝您的快速響應。 您能否幫我解決一下在ruby的測試中編寫測試用例的問題:針對上例中給出的相同REST API處理的單元。 – 2011-07-11 07:44:33