2009-06-19 37 views
3

我已经添加了几个模块并将它们放在我的/ lib目录中,我认为lib目录是由Rails神奇地加载的(除非我在项目早期加载了lib目录并忘记了它)。但是,当我运行需要附加模块的单元测试时,它们不会被加载。在Rails中运行Test :: Unit测试时加载lib文件?

运行测试时应该自动加载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目录不会自动加载通过轨道。加载通过重写const_missing的ActiveSupport :: Dependencies来实现。第一次使用常量时,如果未定义,Rails会尝试在lib目录(以及加载路径中的其他位置)中找到它。为了实现这一点,它使用命名方案,其中SomeClass预计在some_class.rb。测试模式下的Rails使用相同的机制。检查你的config/environments/test.rb和config/environments/development.rb,看看你是否需要做一些有趣的事情。总之,检查你的命名方案。

+0

你是对的 - 原来我在做我需要使用相对路径,而不是像你说的常数,所以我必须: 需要“的lib/REXML” 而不是仅仅的: 需要“REXML ' 现在一切工作正常,在我的测试中,而不必明确加载它在我的text_helper。 – 2009-07-20 15:23:12

相关问题