让 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 中的配置。
我无法让 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 中的配置。