【问题标题】:Load up the lib files when running Test::Unit tests in Rails?在 Rails 中运行 Test::Unit 测试时加载 lib 文件?
【发布时间】:2009-06-20 02:45:05
【问题描述】:

我添加了一些模块并将它们放在我的 /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

【问题讨论】:

    标签: ruby-on-rails testing


    【解决方案1】:

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

    【讨论】:

    • 你是对的 - 结果我是用相对路径而不是像你说的那样使用常量,所以我有: require 'lib/rexml' 而不仅仅是: require 'rexml'现在,在我的测试中一切正常,无需在我的 text_helper 中显式加载它。
    猜你喜欢
    • 1970-01-01
    • 2012-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-07
    • 2011-10-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多