だから私はいくつかのrspecテストを書いています、そして私はRuby理解の欠如に恥ずかしいです。
次のようなファイル構造があります。
test_spec.rbファイルの仕様を実行するときは、upload_toolファイルを次のように含める必要があります。
spec -r ../upload_tool -fs test_spec.rb
次に、upload_toolには次のようにwindows_gui.rbが必要です。
require '../windows_gui'
私の質問は、upload_tool.rbではなくtest_spec.rb(../が必要)に関連してwindows_gui.rbを参照する必要があるのはなぜですか?これは私には間違っていると感じます。テスト仕様のコンテキスト外でupload_tool.rbを使用したいと思います。つまり、毎回requiresを変更する必要があります。
明らかに何かが足りないのですが、テスト仕様に関連して参照しないと、ファイルが見つかりませんというエラーが発生します。
ここで無知で申し訳ありませんが、私は手ぶらでやって来ます。どんな考えでもありがたいです。
BB
あなたはしません。 require
sは、現在のディレクトリ(この場合は_GUI_Tests/Tests
_)を基準にしています。代わりにこれを行った場合:
_cd ..
spec -r upload_tool -fs Test/test_spec.rb
_
これを使用する必要があります:
_require 'windows_gui' # without '../'
_
この問題を回避する最も一般的な方法は、File.dirname(__FILE__)
を使用することです。
_require File.join(File.dirname(__FILE__), '..', 'windows_gui')
_
注:in Ruby 1.9.2 require change it's defaults: Ruby:require vsrequire_relative-両方で実行する回避策のベストプラクティスRuby <1.9 .2および> = 1.9.2