JRuby 1.7.4でlib
ディレクトリを含むgemのテストに問題があります。
lib/vger/resources/account_manager.rb
にあるファイルをテストしたい
私の仕様ファイルはspec/vger/resources/account_manager_spec.rb
にあります
require 'spec_helper'
describe Vger::Resources::AccountManager do
.
.
end
end
テストするファイルをspec_helper.rb
に含めようとしています
require 'rubygems'
require 'bundler/setup'
require 'vger/resources/account_manager'
require 'vger'
RSpec.configure do |config|
# some (optional) config here
end
コマンドrspec spec/vger/resources/account_manager_spec.rb
でテストを実行しているときに、次のエラーが表示されます。
NameError: uninitialized constant Vger::Resources
const_missing at org/jruby/RubyModule.Java:2631
テストしたいファイルがロードされていないようです。どこが間違っているのか、どこで修正するべきか教えてください。
require
を呼び出す前にspec_helper.rbのLOAD PATHを手動で更新してください。これをspec_helper.rbの最初の行にしてみてください:
$: << '../lib'
または
$LOAD_PATH << '../lib'
($:
は$LOAD_PATH
のエイリアスです)
アプリのルートにある.rspec
ファイルに次の行を追加できます:-I lib
ファイルを含めることもできます:-r lib/api.rb
これらのオプションは次のとおりです。
-I PATH
PATHを指定して、$ LOAD_PATHに追加します(複数回使用できます)。
-r、--require PATH
ファイルが必要です。
私は仕様のために以下を使用しています...あなたのlibがどのレベルであるかに依存します...
require_relative '../../lib/module'
RSpecはRails環境をロードするので、覚えているので、application.rbファイルのautoloadディレクトリに追加するだけです。
この行を見つける
# config.autoload_paths += %W(#{config.root}/extras)
コメントを外して、次のように修正します:
config.autoload_paths += %W(#{config.root}/lib)
うまくいくはず