使用Minitest,需要'minitest_helper'加载错误

时间:2012-09-23 17:07:05

标签: ruby-on-rails ruby minitest

我正在测试Minitest :: Spec作为RSpec的替代品,但我有一个麻烦的问题我无法找到答案:

我在spec/models/*_spec.rb中设置了一些基本规格。我的rails应用程序包含minitest-rails,我将rakefile设置如下:

Rake::TestTask.new do |t|
  t.libs.push "lib"
  t.test_files = FileList['spec/**/*_spec.rb']
  t.verbose = true
end
task :default => :test

现在,如果我像这样编写我的spec文件:

require 'minitest_helper'

describe User do
  ...
end

...并运行rake test,我得到:

user_spec.rb:1:in `require': cannot load such file -- minitest_helper (LoadError)

但是,如果我将需求行更改为

require_relative '../minitest_helper'

然后它有效。所以,这是功能性的,但似乎每个使用我在网上找到的最小规格的人的例子都只是调用require 'minitest_helper',而不是require_relative。那么,我错过了什么让那些为别人工作但不在我的情况下呢?

最后一条信息,我的帮助文件如下所示:

# spec/minitest_helper.rb
ENV["RAILS_ENV"] = "test"
require File.expand_path('../../config/environment', __FILE__)

require "minitest/autorun"
require "minitest/rails"

# Uncomment if you want Capybara in accceptance/integration tests
# require "minitest/rails/capybara"

# Uncomment if you want awesome colorful output
# require "minitest/pride"

class MiniTest::Rails::ActiveSupport::TestCase
  # Add more helper methods to be used by all tests here...
end

没什么特别的。谢谢你的帮助!

2 个答案:

答案 0 :(得分:7)

您的测试没有找到帮助文件,因为您没有告诉您的测试看它在哪里。尝试将您的佣金任务更改为:

Rake::TestTask.new do |t|
  t.libs << "lib"
  t.libs << "spec"
  t.test_files = FileList['spec/**/*_spec.rb']
  t.verbose = true
end
task :default => :test

答案 1 :(得分:1)

在Ruby 1.9中,工作目录包含在Ruby加载路径中。如果您愿意,可以添加它:

$: << "."

...或者你可以添加任何你想要的require Ruby文件的其他目录。

如果您看到其他人写作:

require 'minitest_helper'

...然后无疑他们已经为他们的加载路径做了一些事情(或者Rails / Rake已经为他们完成了它)。您可以在Rakefile中尝试p $:以查看Rails / Rake对加载路径所做的事情(如果有的话)。