首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rspec for Faraday::ConnectionFailed

Rspec for Faraday::ConnectionFailed
EN

Stack Overflow用户
提问于 2018-03-22 13:25:10
回答 1查看 1.3K关注 0票数 0

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

代码语言:javascript
复制
 def start
    some code
  rescue Faraday::ConnectionFailed, Faraday::TimeoutError, Faraday::SSLError => e
    message 'CONNECTION FAILED'
  end

我也读到过有关gem Webmock的文章,但是有没有什么方法可以不使用任何额外的gem呢?

EN

回答 1

Stack Overflow用户

发布于 2018-03-22 18:04:20

由于隐私的原因,你不能发布你的真实代码,这里有一个通用的建议。

假设你有这样的代码:

代码语言:javascript
复制
def start
  SomeClass.some_method(some_params)
rescue Faraday::ConnectionFailed, Faraday::TimeoutError, Faraday::SSLError => e
  message 'CONNECTION FAILED'
end

要测试消息是否已引发,您可以执行以下操作:

代码语言:javascript
复制
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).to receive(:some_method)即可。

使用WebMock

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

代码语言:javascript
复制
it 'returns "CONNECTION FAILED" message' do
  WebMock.disable_net_connect!
  # call `start` and test your rescue block
  WebMock.allow_net_connect!
end
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49421136

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档