rspec webmock to_raise ошибка не вызывает ошибку

У меня есть следующий фрагмент кода и тест

class Service
  def self.status(base_uri = 'localhost', basic_auth = {})
    base_uri = "#{ base_uri }/status"
    response = HTTParty.get(base_uri, basic_auth: basic_auth)
  rescue StandardError => e
    binding.pry
    raise "Error occured code: #{ response.code } msg: #{ e.message }"
  end
end
it 'should return error msg if url is not valid' do
  bad_url = "http://bar_url.com"
  expected = 'Error occured'
  stub_request(:get, bad_url).
            with(headers: {'Authorization'=>'Basic YWRtaW46YWRtaW4='}).
            to_raise(StandardError)

  expect { Service.status(bad_url, { username: @username, password: @password }) }.to raise_error(/#{ expected }/) 
end 

Этот код основан на документации.
В результате rspec всегда вызывает исключение:

expected /Error occured/, got #<WebMock::NetConnectNotAllowedError: Real HTTP connections are disabled. Unregistered request: GET h...rization'=>'Basic YWRtaW46YWRtaW4='})

Может ли кто-нибудь помочь мне понять, что я должен изменить, чтобы получить StandardError в следствии?

1 ответ

Решение

Так как служба звонков "#{ base_uri }/status" который http://bar_url.com/status но stub_request объявлен с http://bar_url.com только Net::HTTP.Get ищет соответствие с этим вместо http://bar_url/status,
Это причина, по которой в тесте нет ошибок.

Другие вопросы по тегам