2013-06-06 20 views
17

JRuby 1.7.4でlibディレクトリを含む私のgemをテストする際に問題があります。rspecテストにlibディレクトリを含める方法

私は私のspecファイルは私がspec_helper.rb

require 'rubygems' 
require 'bundler/setup' 
require 'vger/resources/account_manager' 
require 'vger' 

RSpec.configure do |config| 
    # some (optional) config here 
end 
でテストしたいファイルをインクルードしようとしています spec/vger/resources/account_manager_spec.rb

require 'spec_helper' 

describe Vger::Resources::AccountManager do  
    . 
    . 
    end 
end 

であるlib/vger/resources/account_manager.rb

にあるファイルをテストしたいです

コマンドrspec spec/vger/resources/account_manager_spec.rbでテストを実行中にこのエラーが発生します:

NameError: uninitialized constant Vger::Resources 
    const_missing at org/jruby/RubyModule.java:2631 

テストしたいファイルがロードされていないようです。どこが間違っているのか、どこで修正するべきか教えてください。私が覚えているよう

+0

をしてみてください'require_relative'を使い、' spec_helper.rb'があるディレクトリからlibディレクトリのリソースへのパスを指定します。 'require_relative" ../lib/vger "'の代わりに '' vger "' antなどが必要です。 –

+0

@YevgeniyAnfilofyevこれはうまくいかないようです。私はrequire_relative '../lib/vger/'を試してみましたが、require_relative '../lib/vger/resources/'とrequre 'Vger'を削除し、 "vger/resources/account_manager"を要求します。 –

+1

http:// stackoverflowを参照してください。com/questions/11376718/require-lib-in-rspec-with-ruby-1-9-2-bring-no-such-file-to-load – toro2k

答えて

2

RSpecの負荷は、環境レール、それはこのようになり、それを修正し、あなただけの

# config.autoload_paths += %W(#{config.root}/extras) 

コメントを解除し、この行を見つけ、あなたのapplication.rbファイル

に自動ロードディレクトリに追加する必要があります:

config.autoload_paths += %W(#{config.root}/lib) 

それは

+5

これはレールプロジェクトではありません。これは、レールアプリケーションで使用している宝石です。だから、私はそれが動作しませんね –

+0

私はこれが再帰的にパスを自動ロードすると仮定?たとえば、 '/ lib/tasks'にあるレーキタスクもロードされますか? – Dennis

14

手動で働くあなたを更新する必要がありますrequireを呼び出す前にspec_helper.rbのLOAD PATHを実行してください。 ...私は私の仕様については、以下を使用し

+0

私はそれを試しました。 /home/...../work/vger/libはロードされているようですが、同じエラーが発生しています –

+1

'$:<< File.expand_path(" spec/lib ")'私のために働いた – amorphid

+4

' $: 'それは非常にわかりにくいので、' $ LOAD_PATH'は入力するのが面倒なので、代わりに使ってください。しかし、包含のために+1。 – Csteele5

4

$:$LOAD_PATHの別名である)

$: << '../lib' 

または

$LOAD_PATH << '../lib' 

によって:これはあなたのspec_helper.rbの最初の行を作ってみましょうこれに....あなたのlibがあるレベル

require_relative '../../lib/module'

+0

もう少し詳しくお聞かせください。コメントの1つに、あなたが含めることができるより多くの情報があります。 – CaptainBli

2

アプリのルートでご.rspecファイルに次の行を追加することができます。これは、ファイルをインクルードすることも可能です -I lib

-r lib/api.rb

次のようにこれらのオプションが記述されています

-I PATH

Specify PATH to add to $LOAD_PATH (may be used more than once).

-r, --require PATH

Require a file.

関連する問題