6

RSpec の代替として Minitest::Spec をテストしていますが、答えが見つからない厄介な問題があります。

でいくつかの基本的な仕様をセットアップしました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行を次のように変更すると

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

派手なものはありません。助けてくれてありがとう!

4

2 に答える 2

8

テストにヘルパー ファイルの場所を調べるように指示していないため、テストでヘルパー ファイルが見つかりません。rake タスクを次のように変更してみてください:

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
于 2012-09-28T15:10:49.403 に答える
2

Ruby 1.9 では、Ruby のロード パスに作業ディレクトリが含まれていません。必要に応じて追加できます。

$: << "."

require...または、 Ruby ファイルを作成したい他のディレクトリを追加することもできます。

他の人がただ書いているのを見たら:

require 'minitest_helper'

...そして、彼らがロードパスに何かをしたことは間違いありません (または、Rails/Rake が彼らのためにそれを行いました)。Rakefile 内で試しp $:て、Rails/Rake がロード パスで何をするか (もしあれば) を確認できます。

于 2012-09-23T17:10:35.173 に答える