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

Rspec 如何将sinatra机架测试异常转储到控制台?,rspec,sinatra,rack,Rspec,Sinatra,Rack,在开发过程中,我希望在运行测试时看到sinatra应用程序异常,例如: 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_m

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

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
需要'sinatra/base'
类异常web
下面的rspec代码完全没有显示任何异常,如果我取消注释最后一个响应,那么我会看到一些错误,但我看不到什么是错误的

但是调用
mad_方法
会显示异常

添加到最后一个响应中。每个测试中的错误看起来都不合适

我尝试了sinatra配置选项
raise\u errors
dump\u errors
,但这对我帮助不大


有什么想法吗?

可能是rspec
config.backtrace\u clean\u模式的问题
?有关于它的链接

这是必须使用的选项组合,然后它才能工作

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

ENV['RACK\u ENV']
设置为
'test'
时,Sinatra将按默认方式运行。由于Sinatra的工作方式,您必须确保在解释器加载定义应用程序的文件之前正确设置了此环境变量(即,它在创建应用程序类时检查此项,而不是在每次请求时检查此项)。

不,不是这样。rspec可以使用-b选项显示完整的回溯跟踪,但我一点也没有从西纳特拉得到任何例外,关于回溯追踪,我也有这个问题。你解决了吗?谢谢!这对我来说是可行的,我只是像“RACK_ENV=testbundle exec rerun-cx rspec”一样运行rspec。异常的回溯在terminalYes中很好地呈现!我只是把
ENV['RACK\u ENV']='test'
放在我的
test\u helper.rb
文件的顶部。