给出以下服务对象:
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测试? (即如何复制超时?)
答案 0 :(得分:1)
您可以存根get_response
方法并导致它引发错误:
allow(Net::HTTP).to_receive(:get_response).and_raise(Net::ReadTimeout)
中有更详细的描述