Как проверить, что метод должен вызывать различные типы исключений? - PullRequest
0 голосов
/ 28 марта 2012

У меня есть следующий метод:

  def call_http_service(url, url_params)
    begin
      conn = create_connection(url)
      resp = get_response(conn, url_params)
      raise_if_http_status_error(resp)
      xml_resp = parse_xml(resp)
      raise_if_client_status_error(xml_resp)

      return xml_resp
    rescue ClientError => e
      raise ClientError, "Error interacting with feed at #{url}: #{e.message}"
    rescue Faraday::Error::ClientError => e
      raise ClientError, "Error interacting with feed at #{url}: #{e.message}"
    rescue Nokogiri::XML::SyntaxError => e
      raise ClientParseError, "Error parsing response from #{url}: #{e.message}"
    rescue => e
      raise e
    end
  end

Исходя из моего ограниченного понимания RSpec, похоже, что способ проверить, что эти различные типы исключений возникают, - это использовать ожидания сообщений .Это то, как вы подходите к этому?

1 Ответ

2 голосов
/ 28 марта 2012

Это будет выглядеть примерно так:

it "raises ClientError when the HTTP request raises ClientError"
  # stub the http request here to raise the error
  expect do
    subject.call_http_service 'http://example.com'
  end.to raise_error(ClientError)
end

Примечание: спасение и повторное возникновение другой ошибки - это запах кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...