Ruby on rails 法拉第的Rspec::连接失败

Ruby on rails 法拉第的Rspec::连接失败,ruby-on-rails,ruby,ruby-on-rails-3,rspec,faraday,Ruby On Rails,Ruby,Ruby On Rails 3,Rspec,Faraday,我需要为代码中的以下方法编写规范(用于rescue块)。我尝试了一些事情,但没有成功,所以我的天赋将进入救援区。我读过关于使用存根的书,但不知道如何在这种情况下使用它 def start some code rescue Faraday::ConnectionFailed, Faraday::TimeoutError, Faraday::SSLError => e message 'CONNECTION FAILED' end 我也读过关于gemWebmock,

我需要为代码中的以下方法编写规范(用于rescue块)。我尝试了一些事情,但没有成功,所以我的天赋将进入救援区。我读过关于使用存根的书,但不知道如何在这种情况下使用它

 def start
    some code
  rescue Faraday::ConnectionFailed, Faraday::TimeoutError, Faraday::SSLError => e
    message 'CONNECTION FAILED'
  end

我也读过关于gem
Webmock
,但是有没有不使用任何额外gem的方法呢

由于隐私问题,你不能发布真实的代码,这里有一个一般性的建议

假设您有以下代码:

def start
  SomeClass.some_method(some_params)
rescue Faraday::ConnectionFailed, Faraday::TimeoutError, Faraday::SSLError => e
  message 'CONNECTION FAILED'
end
要测试是否引发消息,可以执行以下操作:

it 'returns "CONNECTION FAILED" message' do
  allow(SomeClass).to receive(:request_api) { raise(Faraday::ConnectionFailed) }
  # now you call `start` method and check what you want
end
因此,您只想用方法中存在的实际类和方法替换
allow(SomeClass.),以接收(:some_method)

使用WebMock 使用WebMock可以通过几种方式实现。最简短的是:

it 'returns "CONNECTION FAILED" message' do
  WebMock.disable_net_connect!
  # call `start` and test your rescue block
  WebMock.allow_net_connect!
end

显示
some code
-您需要将其中的某个代码存根以引发法拉第::错误类如果未检测到Internet连接并且
some code
由于代码隐私,我无法共享,则会引发错误