немного поднять исключение ошибки rspec test

Я пытаюсь написать простой тест rspec для исключения ошибки с небольшим повышением. Как я могу написать ожидаемое соответствие сообщения об ошибке ALREADY_A_BITLY_LINK - '500' с raise_error(BitlyError). Этот rspec действительно проходит. Но если бы я использовал ту же ошибку raise_error для недопустимого URL-адреса. Тоже пройдет. Как я могу проверить конкретное сообщение об исключении?

bitly_spec.rb

require 'rails_helper'

describe Bitly do
  before do
    @bitly = Bitly.new(username, api_key)
  end
  let(:bitly_url) { 'bitly_url' } #stackoverflow doesn't allow URL shortener

  it 'should return exception error if given url is bitly' do
    expect { @bitly.shorten(bitly_url) }.to raise_error(BitlyError)
  end
end

Отладчик

@bitly.shorten(bitly_url) возвращает *** BitlyError Exception: ALREADY_A_BITLY_LINK - '500'

raise_error(BitlyError) возвращает #<RSpec::Matchers::BuiltIn::RaiseError:0x007fa229c56f48 @block=nil, @actual_error=nil, @warn_about_bare_error=false, @expected_error=BitlyError, @expected_message=nil>


person khoamle    schedule 16.07.2016    source источник


Ответы (1)


Как видно из документации — https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers/raise-error-matcher — сопоставитель повышения ошибки может принимать второй параметр строки или регулярного выражения для сопоставления с сообщение об исключениях

expect { whatever }.to raise_error(BitlyError, "ALREADY_A_BITLY_LINK")
person Thomas Walpole    schedule 16.07.2016