让Webmock存根HTTParty请求

时间:2015-02-26 19:36:03

标签: ruby-on-rails ruby httparty webmock

我无法让Webmock工作。我正在使用HTTParty来发出GET请求。我想让以下请求返回错误:

require 'spec_helper'
require 'api_parser'
require 'httparty'

describe ApiParser do
  describe "#get_data" do
    it "returns data" do
      stub_request(:get, "congress.api.sunlightfoundation.com").to_return(:status => [401, "Forbidden"])
      puts HTTParty.get "http://congress.api.sunlightfoundation.com/bills/?history.enacted=true"
  end
end

我已将以下行添加到spec_helper.rb:

require 'webmock/rspec'

WebMock.disable_net_connect!(allow_localhost: true)

但它仍在调用实际的API而不是存根。我没有得到我期待的401错误。我不确定这里的问题是什么。 spec_helper缺少什么吗?

更新:我做了一些测试,看起来require api_parser导致了这个问题。当我删除它时,存根工作,但当我添加它时它停止工作。 ApiParser类是我使用HTTParty的地方。我修改了上面的测试,直接使用HTTParty,而不是使用类中的方法。

1 个答案:

答案 0 :(得分:0)

发现我在ApiParser类中禁用了Webmock(几小时前在调试时忘了删除它),这在spec_helper中覆盖了配置。