让 Webmock 存根 HTTParty 请求

Getting Webmock to stub HTTParty requests

我无法让 Webmock 工作。我正在使用 HTTParty 发出 GET 请求。我希望以下请求 return 出错:

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 class 是我使用 HTTParty 的地方。我修改了上面的测试直接使用 HTTParty 而不是使用 class.

中的方法

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