web-dev-qa-db-ja.com

rspecテストにlibディレクトリを含める方法

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

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

27

requireを呼び出す前にspec_helper.rbのLOAD PATHを手動で更新してください。これをspec_helper.rbの最初の行にしてみてください:

$: << '../lib'

または

$LOAD_PATH << '../lib'

$:$LOAD_PATHのエイリアスです)

19
user117516

アプリのルートにある.rspecファイルに次の行を追加できます:-I lib

ファイルを含めることもできます:-r lib/api.rb

これらのオプションは次のとおりです。

-I PATH

PATHを指定して、$ LOAD_PATHに追加します(複数回使用できます)。

-r、--require PATH

ファイルが必要です。

7

私は仕様のために以下を使用しています...あなたのlibがどのレベルであるかに依存します...

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

6
Stephane Paul

RSpecはRails環境をロードするので、覚えているので、application.rbファイルのautoloadディレクトリに追加するだけです。

この行を見つける

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

コメントを外して、次のように修正します:

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

うまくいくはず

2
Ivan Shamatov