2009-06-19 2 views
3

Я добавил несколько модулей и бросил их в каталоге/lib, и я думаю, что каталог lib загружен магически Rails (если я не загрузил каталог lib где-то в начале моего проекта и не забыл об этом). Однако, когда я запускаю модульные тесты, которые требуют моих дополнительных модулей, они не загружаются.Загрузите файлы lib при запуске Test :: Unit тесты в Rails?

Должен ли каталог lib загружаться автоматически при запуске тестов или есть элегантный способ сделать это для тестирования? Я надеялся, что скрипты rake + Test :: Unit будут загружать среду Rails точно, но это, похоже, не так. Я оставил с делать что-то добавить, как это test_helper.rb:

require File.expand_path(File.dirname(__FILE__) + "/../lib/foo") 

Я бегу моих тестов с помощью стандартных граблей сценариев, как:

rake test 
rake test:units 
rake test:functionals 

ответ

4

Ваш Lib каталог автоматически не загружается рельсы. Загрузка происходит через ActiveSupport :: Dependencies overriding const_missing. Когда вы используете константу в первый раз, если она не определена, Rails пытается найти ее в каталоге lib (и в других местах пути загрузки). Чтобы достичь этого, он использует схему именования, где ожидается, что что-то под названием SomeClass должно быть в some_class.rb. Рельсы в тестовом режиме используют тот же механизм. Проверьте свою конфигурацию/среды/test.rb и config/environment/development.rb, чтобы узнать, делаете ли вы что-то смешное с требованиями. Короче, проверьте свою схему именования.

+0

Вы правы - Оказывается, я делал мои требовать с относительным путем вместо константы, как вы сказали, так что мне пришлось: требуют «Библиотека/REXML» Вместо того, чтобы просто: требуют «REXML ' Теперь все работает отлично в моих тестах, не загружая явным образом в свой text_helper. –

Смежные вопросы