rspec-rails(2.7.0)rails(3.0.10) post:Rails 3.1 Error Catching對我來說是無關緊要的。爲什麼考慮_all_requests_local失敗,rspec config
代碼:
class ApplicationController < ActionController::Base
unless Rails.application.config.consider_all_requests_local
rescue_from ActiveRecord::RecordNotFound, :with => :render_404
rescue_from Exception, :with => :render_500
rescue_from FunnyException, :with => :my_errors
def my_errors(exception)
#some stuff for production
puts "=======From top====#{Rails.application.config.consider_all_requests_local}"
end
else
rescue_from FunnyException, :with => :my_errors
def my_errors(exception)
#some stuff for development
puts "=====From bottom======#{Rails.application.config.consider_all_requests_local}"
end
end
end
此代碼完全可與生產/研發......問題是,當我想用RSpec的測試。如何在環境之間切換測試用例?
我嘗試添加類似:
before do
Rails.application.config.consider_all_requests_local = true
end
我得到:
... =====從底部======真正=====從。底部======真。=====從 底部======真。=====從底部======真正
所以試圖
before do
Rails.application.config.consider_all_requests_local = false
end
,所以我得到:
... =====從底部======假=====從底部======假===。 ==從 bottom ====== false。===== From bottom ======假
這怎麼可能? ...與更改spec_helper相同
config.before(:each) do
Rails.application.config.consider_all_requests_local = false
end
除非不起作用。 頂部部分無法與rspec ...總是打底部爲什麼?我認爲它與Rack現在有某種聯繫......但是有什麼解決方案可以動態地改變rspec內的這種行爲嗎?
問候
我不確定如果我的情況是相同的,但我必須在前面的塊中添加:'Rails.application.config.action_dispatch.show_exceptions = true'。和「... = false」到後面。 –
令人驚歎的解決方案,正是我一直在尋找的。謝謝! –
當我使用'rake spec'運行完整套件時,這是失敗的。只有當我運行特定的「特徵」規範時纔會通過。 –