Используя RSpec, как я могу проверить результаты блока исключений спасения - PullRequest
6 голосов
/ 23 марта 2012

У меня есть метод, в котором есть блок начала / спасения.Как проверить спасательный блок с помощью RSpec2?

class Capturer

  def capture
    begin
      status = ExternalService.call
      return true if status == "200"
      return false
    rescue Exception => e
      Logger.log_exception(e)
      return false
    end
  end

end

describe "#capture" do
  context "an exception is thrown" do
    it "should log the exception and return false" do
      c = Capturer.new
      success = c.capture
      ## Assert that Logger receives log_exception
      ## Assert that success == false
    end
  end
end

1 Ответ

8 голосов
/ 23 марта 2012

Используйте should_receive и should be_false:

context "an exception is thrown" do
  before do
    ExternalService.stub(:call) { raise Exception }
  end

  it "should log the exception and return false" do
    c = Capturer.new
    Logger.should_receive(:log_exception)
    c.capture.should be_false
  end
end

Также обратите внимание, что вы должны не спасать от Exception, но что-то более конкретное.Exception охватывает все , что почти наверняка не то, что вы хотите.Самое большее, вы должны спасаться от StandardError, который является значением по умолчанию.

...