给定以下服务对象:
class GetJSON
def self.call(source)
uri = URI.parse(source)
res = Net::HTTP.get_response(uri)
return unless res.is_a?(Net::HTTPSuccess)
JSON.parse(res.body)
end
end
当Net::HTTP.get_response(uri)
需要很长时间才能响应时,我得到一些错误。如果发生这种情况,我希望该方法返回nil。
下面看起来可以吗?
class GetJSON def self.call(source) uri = URI.parse(source) begin res = Net::HTTP.get_response(uri) rescue Net::ReadTimeout return end return unless res.is_a?(Net::HTTPSuccess) JSON.parse(res.body) end end
我如何为此编写RSPEC测试?(即如何复制超时?)
您可以存根get_response
方法并使其引发错误:
allow(Net::HTTP).to_receive(:get_response).and_raise(Net::ReadTimeout)
在RSpec文档中有更详细的描述