如何将sinatra机架测试异常转储到控制台?

时间:2012-03-27 13:31:30

标签: rspec sinatra rack

在我开发的过程中,我希望在运行测试时看到sinatra app异常,例如:

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_errorsdump_errors,但这对我没什么帮助。

有什么想法吗?

3 个答案:

答案 0 :(得分:12)

ENV['RACK_ENV']设置为'test'时,Sinatra将按照您希望的方式运行。由于Sinatra的工作方式,你必须确保在解释器加载定义你的应用程序的文件之前正确设置了这个环境变量(即它在创建app类时检查它,而不是在每个请求上。)

答案 1 :(得分:7)

这是必须使用的选项组合,然后才有效。

set :raise_errors, true
set :dump_errors, false
set :show_exceptions, false

答案 2 :(得分:0)

也许是rspec config.backtrace_clean_patterns的东西?有关于它的链接http://spin.atomicobject.com/2010/12/28/rspec-backtrace-filtering/