包含测试辅助模块时的“未初始化常量”

时间:2010-12-16 11:42:46

标签: ruby-on-rails ruby ruby-on-rails-3 mixins

尝试将辅助模块包含在测试中时,我发现了一个未初始化的常量错误。

我的rails测试目录中有以下文件

functional> admin> school_controller_test.rb
functional> controller_helper.rb

类/模块主体如下:

module ControllerHelper
  def check_sort_order (items, column, direction)
    ...
  end
end

class Admin::SchoolsControllerTest < ActionController::TestCase
  include ::ControllerHelper 

  test "should sort by columns" do
    check_sort_order(assigns(:schools), 'schools.name', 'asc')
    check_sort_order(assigns(:schools), 'schools.name', 'desc')
  end
end

当我运行它时,测试输出是:

/.../。rvm / gems / ruby​​-1.9.2-p0 / gems / rspec-core-2.3.0 / lib / rspec / core / backward_compatibility.rb:20:in`const_missing':uninitialized constant ControllerHelper(NameError)

我尝试过使用命名空间,但根本无法将模块混合在一起!有什么想法我收到这个错误?或者这是提取常见测试功能的正确方法吗?我对Rails很新,所以任何建议都会受到赞赏:)

干杯!

1 个答案:

答案 0 :(得分:7)

尝试将此添加到test_helper.rb

require "test/functional/controller_helper"

附注:不确定test:unit,但rspec有一个spec/support目录,可以自动加载文件。