Ruby on rails 法拉第的Rspec::连接失败
我需要为代码中的以下方法编写规范(用于rescue块)。我尝试了一些事情,但没有成功,所以我的天赋将进入救援区。我读过关于使用存根的书,但不知道如何在这种情况下使用它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,
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
由于代码隐私,我无法共享,则会引发错误