ruby - rspec webmock to_raise 错误未引发错误

标签 ruby rspec webmock

我有以下代码片段和测试

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 

此代码基于 documentation .
结果 rspec 总是引发异常:

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

谁能帮我弄清楚我应该改变什么才能获得 StandardError结果呢?

最佳答案

由于服务调用 "#{ base_uri }/status" ,它是 http://bar_url.com/statusstub_request仅使用 http://bar_url.com 声明,Net::HTTP.Get 会查找与此匹配的内容,而不是 http://bar_url/status
这就是测试中没有出现错误的原因。

关于ruby - rspec webmock to_raise 错误未引发错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48137407/

相关文章:

ruby-on-rails - 如何从 rest api 返回 pdf 文件?

ruby-on-rails - Rails respond_with & Rspec Controller : Testing unsuccessful update

ruby-on-rails - RSpec 的未定义方法 `its'(Hartl 的 Ruby on Rails 教程)

ruby-on-rails - VCR 与 webmock 阻止我的 rspec

ruby - Ruby 中 WeakRef 的成本是多少?

Javascript 未在 heroku 上加载

python - 是否有技术原因无法用 Python 重写像 RSpec 这样的 Ruby DSL?

ruby - 根据要求使用特定的 VCR 磁带

Ruby TestUnit、VCR 和 HTTP API 请求

ruby gem : writing tests for api wrapper