我正在测试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
没什么特别的。谢谢你的帮助!
答案 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对加载路径所做的事情(如果有的话)。