capybara-webmock icon indicating copy to clipboard operation
capybara-webmock copied to clipboard

Empty list of proxied requests

Open brindu opened this issue 2 years ago • 0 comments

I'm using this gem to stub external requests but it has no effect so far.

My configuration in spec/spec_helper.rb:

  require 'capybara/rspec'
  require 'capybara/webmock'

  Capybara.javascript_driver = :capybara_webmock_chrome_headless

  require 'webmock/rspec'

  RSpec.configure do |config|
    config.before(:each) do |example|
      if example.metadata[:type] == :feature
        stub_request(:get, 'https://api.intercom.io/companies')
        Capybara::Webmock.start
      end
    end

    config.after(:suite) do
      Capybara::Webmock.stop
    end
end 

The test itself:

require 'rails_helper'

describe 'visit homepage', type: :feature do
  subject { visit root_path }

  it 'works', js: true do
    expect do
      subject
    end.not_to raise_error
  end
end

The test raixse this error:

Failures:

  1) visit homepage works
     Failure/Error:
       expect do
         subject
       end.not_to raise_error

       expected no Exception, got #<WebMock::NetConnectNotAllowedError: Real HTTP connections are disabled. Unregistered request: GET h... "https://api.intercom.io/companies")

Which indicates the external is not stubbed... As documented in the README I inspect the list of proxied requests that remains empty. I tried to populate it beforehand in different ways as in the follwing

Capybara::Webmock.proxied_requests << 'https://api.intercom.io/companies'
Capybara::Webmock.proxied_requests << URI('https://api.intercom.io/companies')
Capybara::Webmock.proxied_requests << stub_request(:get, 'https://api.intercom.io/companies') 

None of this works.

I can't find in the README neither in the code itself how to populate this list of proxied/stubbed requests and simply following the README instructions does not work. Can someone help clarify how this is supposed to work?

brindu avatar Feb 23 '23 11:02 brindu