首页 > 解决方案 > 覆盖 ApplicationController 方法的适当位置

问题描述

在针对我的应用程序运行测试套件时,我需要覆盖控制器方法。

我不得不将我的覆盖放在我希望阻止的应用程序代码中。

class ApplicationController
end

if ENV['LAYOUT'] == 'test'
  class ApplicationController
    layout: "test_layout"
  end
end

ApplicationController 不存在让我在任何规范助手中覆盖。加载顺序为:

  1. spec_helper
  2. 配置/应用程序
  3. rails_helper
  4. 应用程序控制器

因此,我在我的 spec_helper 中设置 ENV 变量,如果设置了 ENV,则重新定义 ApplicationController。这看起来很乱,我宁愿从 /spec 目录覆盖 ApplicationController。

我有更好的地方覆盖/specs目录中的 ApplicationController 吗?

标签: ruby-on-railsrspec3

解决方案


推荐阅读