Ruby 如何使用rest客户端资源检查响应代码
我对Ruby还不太熟悉。我正试图针对以下类编写RSpec测试:Ruby 如何使用rest客户端资源检查响应代码,ruby,rspec,rest-client,Ruby,Rspec,Rest Client,我对Ruby还不太熟悉。我正试图针对以下类编写RSpec测试: require 'rest-client' class Query def initialize @@log = Logger.new(STDOUT) RestClient.log = @@log @@user = "joe@example.com" @@password = "joe123" end def get_details begin url = "htt
require 'rest-client'
class Query
def initialize
@@log = Logger.new(STDOUT)
RestClient.log = @@log
@@user = "joe@example.com"
@@password = "joe123"
end
def get_details
begin
url = "http://api.example.com/sample/12345"
resource = RestClient::Resource.new(url, :user => @@user,
:password => @@password, :content_type => :json, :accept => :json)
details = resource.get
rescue => e
throw e # TODO: something more intelligent
end
end
end
我发现与返回响应的RestClient.get
不同,Resource.get
以字符串的形式返回响应体。我想让响应正常工作,因为我想扩展它以进行不同的子资源调用
有没有办法找到GET调用响应的HTTP状态码?这将允许我编写一个测试,如:
require 'rspec'
require_relative 'query'
describe "Query site" do
before :all do
@query = Query.new
end
it "should connect to site" do
details = @query.get_details
expect(details).to_not be_nil
expect(details.code).to eq(200)
expect(details.body).to match /description12345/
end
end
Get返回从String类继承的RestClient::Response类的实例
您仍然可以通过调用方法codedetails.code
来检查返回代码。其他方法有details.headers
和details.cookies
等,这些都不是我的经验。当我检查details.class
时,它返回String
@neontapir RestClient扩展它从http请求获得的字符串,并使用RestClient::Response模块扩展它。所以details.is_是一个?(字符串)
和details.is_?(RestClient::Response)
。如果您尝试运行details.code
,它将在AbstractResponse中返回代码详细信息。RestClient::Response的代码可以找到谢谢,我理解现在发生的事情。谢谢你的耐心!