我正在尝试通过ruby test / unit / mytest.rb运行单独的测试,但我总是得到一个“没有这样的文件加载 - test_helper”错误。谷歌提出了一些建议,但没有一个对我有用。我在Ubuntu 10.10上运行Rails 3.0,Ruby 1.9.2(通过RVM)
这是我到目前为止所尝试的内容 - 任何建议都非常赞赏
任何建议都非常感激 - 我很难过。
答案 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中的当前目录,这会导致此问题。你有几个选择。
使用app dir中的-I选项调用测试:
ruby -I test test / functional / test_foo.rb
并使用不带路径的require:
require "test_helper.rb"
在require中使用完整路径。任
要求'pathname'
需要Pathname.new( FILE )。realpath.dirname.join('/../ test_helper.rb')
或
require (File.dirname(File.realdirpath(__FILE__)) + '/../test_helper.rb')
答案 5 :(得分:3)
如果要创建gem或引擎,则在测试虚拟应用程序目录中运行rake test
将导致此错误。在gem的根目录中运行rake test
将避免这种情况。