在我开发的过程中,我希望在运行测试时看到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_errors
和dump_errors
,但这对我没什么帮助。
有什么想法吗?
答案 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/