2011-06-07 76 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