在Rails中运行Test :: Unit测试时加载lib文件?

时间:2009-06-19 18:36:47

标签: ruby-on-rails testing

我添加了一些模块并将它们放在我的/ lib目录中,我认为lib目录是由Rails神奇地加载的(除非我在项目早期的某个地方加载了lib目录而忘了它)。但是,当我运行需要我的附加模块的单元测试时,它们不会被加载。

运行测试时是否应自动加载lib目录,还是有优雅的方法进行测试?我原本希望rake脚本+ Test :: Unit会完全加载我的Rails环境,但事实并非如此。我只是在为test_helper.rb添加这样的东西:

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

我正在使用标准的rake脚本运行我的测试,例如:

rake test
rake test:units
rake test:functionals

1 个答案:

答案 0 :(得分:4)

您的lib目录不会被rails自动加载。通过重写const_missing的ActiveSupport :: Dependencies进行加载。当你第一次使用一个常量时,如果它是未定义的,Rails会尝试在lib目录(以及加载路径中的其他位置)中找到它。为实现此目的,它使用命名方案,其中名为SomeClass的内容应在some_class.rb中。测试模式下的Rails使用相同的机制。检查你的config / environments / test.rb和config / environments / development.rb,看看你是否做了一些有趣的事情。简而言之,请检查您的命名方案。