Как сбросить исключения из теста sinatra в консоль? - PullRequest
4 голосов
/ 27 марта 2012

Во время разработки я хотел бы видеть исключения приложений sinatra при запуске тестов, пример cosider:

require 'sinatra/base'

class ExceptionWeb < Sinatra::Base
  enable :raise_errors
  enable :dump_errors
  configure do 
    enable :dump_errors
  end
  get "/" do
    raise "hell"
    "ok"
  end
  def self.bad_method
    raise "bad method"    
  end
end


require 'rack/test'

describe 'The Web interface' do
  include Rack::Test::Methods

  def app
    ExceptionWeb
  end
  it "should error out" do
    get "/"
    #puts last_response.errors
    #ExceptionWeb.bad_method
    #last_response.should be_ok
  end
end

Следующий код rspec вообще не показывает исключений, если я раскомментирую last_response, то вижу, что что-то не так, но не вижу, что было не так.

Но звонок mad_method показывает мне исключение.

И добавление puts last_response.errors к каждому тесту не выглядит правильным.

Я попробовал опции конфигурации sinatra raise_errors и dump_errors, но это мне мало помогает.

Есть идеи?

Ответы [ 3 ]

13 голосов
/ 09 июля 2012

Sinatra будет вести себя так, как вы хотите по умолчанию, когда ENV['RACK_ENV'] установлен на 'test'. Из-за того, как работает Sinatra, вы должны убедиться, что эта переменная среды установлена ​​правильно до , интерпретатор загружает файл, в котором определено ваше приложение (т. Е. Он проверяет это при создании класса приложения, а не каждый запрос.)

7 голосов
/ 06 июня 2012

Это комбинация опций, которые необходимо использовать, и тогда она работает.

set :raise_errors, true
set :dump_errors, false
set :show_exceptions, false
0 голосов
/ 27 марта 2012

Может быть что-то с rspec config.backtrace_clean_patterns? Есть ссылка об этом http://spin.atomicobject.com/2010/12/28/rspec-backtrace-filtering/

...