Pio*_*ior 11 rspec ruby-on-rails-3
rspec-rails(2.7.0)rails(3.0.10)post:Rails 3.1错误捕获对我来说无关紧要.
码:
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
Run Code Online (Sandbox Code Playgroud)
这段代码非常适合生产/开发......当我想用rspec测试它时,问题就出现了.如何在环境之间切换测试用例?
我尝试添加类似的东西:
before do
Rails.application.config.consider_all_requests_local = true
end
Run Code Online (Sandbox Code Playgroud)
我明白了:
... =====从底部开始====== true.=====从底部开始====== true.=====从底部开始====== true.== ===从底部======是的
好想的
before do
Rails.application.config.consider_all_requests_local = false
end
Run Code Online (Sandbox Code Playgroud)
所以我得到:
... =====从底部开始====== false.=====从底部开始====== false.=====从底部开始====== false.== ===从底部====== false
这怎么可能呢?...与更改spec_helper相同
config.before(:each) do
Rails.application.config.consider_all_requests_local = false
end
Run Code Online (Sandbox Code Playgroud)
除非不起作用.顶部是无法访问rspec ...总是点击底部为什么?我认为它现在以某种方式与Rack绑定...但是有没有任何解决方案可以在rspec中动态改变这种行为?
问候
Pio*_*ior 22
好的,我发现很容易解决
before do
Rails.application.config.consider_all_requests_local = false
load "application_controller.rb"
end
after do
Rails.application.config.consider_all_requests_local = true
load "application_controller.rb"
end
Run Code Online (Sandbox Code Playgroud)
它是匿名应用程序控制器测试套件的一部分.
您必须在块之后添加...因为此更改将通过其他套件保留.
欢迎任何改进:D
编辑:使用spork和guard导致我有时候随机错误......之前:所有似乎都解决了这个问题