为什么过滤前的配置设置不会改变测试环境的设置?

时间:2014-07-09 11:27:08

标签: ruby-on-rails rspec

注意,这是在Rails 4.0.4

的上下文中

我试图测试Rails是否正确提供自定义错误页面。

为了让测试环境能够处理像生产这样的错误,我需要改变它的配置。因此,根据this questionthis question的指导,我创建了执行此操作的前后过滤器:

feature 'Error pages:', focus: true do
  include BaseHelper

    before do
      Rails.application.config.consider_all_requests_local = false
      Rails.application.config.action_dispatch.show_exceptions = true
      load "application_controller.rb"
    end 

    after do
      Rails.application.config.consider_all_requests_local = true
      Rails.application.config.action_dispatch.show_exceptions = false
      load "application_controller.rb"
    end

    scenario "system  should return the correct 404 page" do
      # ...
    end
end 

然而,这似乎并不影响事情。仅使用过滤器之前我可以看到(使用save_and_open_page)应用程序不使用我的错误页面。

但我可以直接在environments/test.rb

中更改这些设置

如果我将相同的设置放入test.rb,那么测试会正确使用我的自定义错误页面:

# Show full error reports and disable caching
config.consider_all_requests_local       = false
config.action_dispatch.show_exceptions = true

当这些设置在配置中就位时,测试按预期工作并返回自定义错误页面。

此外,如果它是相关的,在这两种情况下我都使用自定义的exceptioins_app处理程序:

config.exceptions_app = ->(env) { ExceptionController.action(:show).call(env) }

为什么没有通过过滤器获取配置设置?

我不明白为什么在过滤器中所做的完全相同的更改似乎不会影响测试。

0 个答案:

没有答案