«неинициализированная константа», когда включен вспомогательный тестовый модуль - PullRequest
6 голосов
/ 16 декабря 2010

Я получаю неинициализированную постоянную ошибку при попытке включить вспомогательный модуль в тест.

У меня есть следующие файлы в моей тестовой директории 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: в const_missing: неинициализированная константа ControllerHelper (NameError)

Я пытался поиграть с пространствами имен, но никак не могу смешать модуль! Есть идеи, почему я получаю эту ошибку? Или это даже правильный способ извлечь общие тестовые функции? Я очень новичок в Rails, поэтому любой совет будет оценен :)

Ура!

1 Ответ

7 голосов
/ 16 декабря 2010

Попробуйте добавить это к test_helper.rb:

require "test/functional/controller_helper"

Примечание: Не уверен насчет test: unit, но у rspec есть каталог spec/support для файлов для автоматической загрузки.

...