2012-09-23 44 views
6

我測試了MINITEST ::規格作爲替代RSpec的,但我有一個討厭的問題,我不能完全當場回答:使用MINITEST,需要「minitest_helper」加載錯誤

我已經在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 

現在,如果我寫我的規格文件是這樣的:

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' 

然後它工作。所以,這是功能性的,但似乎每個使用minitest規格的人在網上找到的例子都只是調用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 

沒什麼特別的。謝謝您的幫助!

回答

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

't.libs <<「spec」'。謝謝。 – Andrew

1

在Ruby 1.9中,工作目錄是而不是包含在Ruby加載路徑中。您可以添加,如果你想:

$: << "." 

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

如果你看到其他人只需編寫:

require 'minitest_helper' 

......那麼毫無疑問,他們已經做了一些它們的負載路徑(或軌道/耙辦到了他們的)。您可以在Rakefile中嘗試p $:以查看Rails/Rake如何處理加載路徑(如果有的話)。

+0

這很有道理,謝謝! – Andrew

+0

請注意當前路徑從1.9.2中的搜索中移除,當然不是沒有原因 – UncleGene