Rails测试找不到test_helper

时间:2010-10-16 20:58:41

标签: ruby-on-rails ruby testing

我正在尝试通过ruby test / unit / mytest.rb运行单独的测试,但我总是得到一个“没有这样的文件加载 - test_helper”错误。谷歌提出了一些建议,但没有一个对我有用。我在Ubuntu 10.10上运行Rails 3.0,Ruby 1.9.2(通过RVM)

这是我到目前为止所尝试的内容 - 任何建议都非常赞赏

  • 将“require test_helper”更改为“require File.dirname( FILE )+”/../ test_helper“ “在test / unit / mytest_test.rb中。它带回”没有这样的文件加载 - 测试/单元/../ test_helper“
  • 尝试运行rvm test / unit / mytest_test.rb与上面相同
  • 尝试运行ruby -I test / unit / mytest_test.rb。没有消息到终端。大约5分钟后等待事情发生,ctrl + c'd out of it

任何建议都非常感激 - 我很难过。

6 个答案:

答案 0 :(得分:23)

ruby​​ 1.9.2从加载路径中删除当前目录“。”。我必须这样做才能让它发挥作用:

require 'test_helper'

并称之为:

ruby -I. unit/person_test.rb 

答案 1 :(得分:12)

我已将以下内容添加到测试文件的顶部。

require File.expand_path("../../test_helper", __FILE__)

这会恢复以前的行为并允许调用简单:

ruby test/unit/person_test.rb

答案 2 :(得分:11)

我今天自己正在与这件事作斗争,我不喜欢整篇文章和东西的大需求......

在我的情况下,它是Rakefile的错误..

所以现在它看起来像这样:

require "bundler/gem_tasks"
require "rake/testtask"

Rake::TestTask.new do |t|
  t.libs << "lib"
  t.libs << "test" # here is the test_helper
  t.pattern = "test/**/*_test.rb"
end

task default: :test

我知道它的旧版本并且已接受标记,但也许这也会帮助某人:) 祝你有愉快的一天

答案 3 :(得分:6)

也许您应该以这种方式运行测试用例:

$ rake test

如果使用rake,则无需从生成的代码中更改“require”语句。

使用Ruby 1.9.3和Rails 3.2.8进行测试

答案 4 :(得分:3)

Rails 1.9不再包含LOAD_PATH中的当前目录,这会导致此问题。你有几个选择。

  1. 使用app dir中的-I选项调用测试:

    ruby​​ -I test test / functional / test_foo.rb

  2. 并使用不带路径的require:

    require "test_helper.rb"
    
    1. 在require中使用完整路径。任

      要求'pathname'

      需要Pathname.new( FILE )。realpath.dirname.join('/../ test_helper.rb')

    2. require (File.dirname(File.realdirpath(__FILE__)) + '/../test_helper.rb')
      

答案 5 :(得分:3)

如果要创建gem或引擎,则在测试虚拟应用程序目录中运行rake test将导致此错误。在gem的根目录中运行rake test将避免这种情况。