Я не понимаю, как настроить 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
allow_net_connect!
отключает заглушки. В этом примере создается впечатление, что это не так: github.com/bblimke/ Может ли проблема заключаться в том, что вы включаетеhttps://
в заглушки? Похоже, что ни один из примеров веб-мока не включает протокол, поэтому попробуйте его не включать:stub_request(:get, 'www.example.com').to_rack(FakeExampleDotCom)
- person Henrik N   schedule 18.03.2017