Cucumber on Rails — заглушить только один запрос локальным файлом HTML

Я не понимаю, как настроить webmock (или любую библиотеку-заглушку), чтобы заглушить только определенные запросы к определенному URL-адресу (www.example.com).

Я выполняю тесты Cucumber в браузере и хочу разрешить подключение к любому сайту, кроме тех запросов, которые я хочу заглушить.

В моем конкретном случае я хочу закрыть доступ к www.example.com/article/:article_id и доставить HTML-файл страницы, которую я ранее загрузил.

После этой ссылки и других вопросов

# Gemfile
gem 'webmock'

# features/support/webmock.rb
require 'webmock/cucumber'

Мой огуречный файл env

# features/env.rb
# Allow all server connections by default
WebMock.allow_net_connect!

Before('@stub-example.com') do 
  stub_request(:get, 'https://www.example.com').to_rack(FakeExampleDotCom)
end

В настоящее время я застрял на этом этапе, потому что заглушка не работает, и мой тест пытается подключиться к реальному веб-сайту. Я полагаю, WebMock.allow_net_connect! отключает любую заглушку. Я не могу просто disable_net_connect!, так как хочу авторизовать каждый сайт (а не только локальный хост) и только "черный список" www.example.com и заглушить его. Как я могу это сделать ?

FYI: Мое приложение Sinatra, которое обслуживает HTML-файл.

class FakeExampleDotCom < Sinatra::Base
  get 'article/:article_id' do
    html_response 200, "#{params[:article_id]}_article.html"
  end

  private

  # Returns the HTML file corresponding to the article
  def html_response(response_code, file_name)
    content_type :html
    status response_code
    File.open(Rails.root.join('features', 'assets', file_name)).read
  end
end

person Cyril Duchon-Doris    schedule 17.03.2017    source источник
comment
Вы пытались использовать vcr gem? хотя он записывает и позже обслуживает ответы для конкретных примеров спецификаций, а не вызовы по конкретным адресам.   -  person Tomasz Giba    schedule 17.03.2017
comment
Да, я собираюсь использовать видеомагнитофон в будущем, но, похоже, есть много проблем с настройкой (управление секретами, сокрытие паролей и т. д.), которые, вероятно, потребуют много времени. Я хочу посмотреть, смогу ли я что-то работать с простым сохраненным файлом HTML (которым я могу легко манипулировать, чтобы удалить данные или вставить данные, которые я хочу).   -  person Cyril Duchon-Doris    schedule 17.03.2017
comment
Я не думаю, что вы правы в том, что allow_net_connect! отключает заглушки. В этом примере создается впечатление, что это не так: github.com/bblimke/ Может ли проблема заключаться в том, что вы включаете https:// в заглушки? Похоже, что ни один из примеров веб-мока не включает протокол, поэтому попробуйте его не включать: stub_request(:get, 'www.example.com').to_rack(FakeExampleDotCom)   -  person Henrik N    schedule 18.03.2017
comment
Или может быть, вы заглушаете https, но, возможно, тест делает HTTP-запрос: stackoverflow.com/a/21369031/6962   -  person Henrik N    schedule 18.03.2017