RSpec中的模拟请求超时

时间:2017-07-27 15:41:49

标签: ruby-on-rails rspec

我有一个类向另一个服务发出请求,我想测试处理该请求的错误。

代码如下所示:

  response = RequestObject.post #this triggers a HTTP request

  LocalObject.update(foreign_id: response.id, retrieved_at: Time.current )

在我的测试中,我将请求存根并在成功时返回JSON,但我想测试一下,如果该响应引发错误,:foreign_id:retrieved_at未设置。

我将这样的成功请求存根:

allow(RequestObject).to receive(:post).and_return({id: 1,})

模拟RequestObject引发超时错误的好方法是什么?

(我正在使用Faraday gem表示我的请求)

1 个答案:

答案 0 :(得分:1)

您可以使用#and_raise模拟错误。

allow(RequestObject).to receive(:post).and_raise(SomeError)

这应该允许您测试该代码路径。

Here是指向rspec文档的链接。