2013-06-06 36 views
17

我在測試我的gem時遇到問題,其中包括在JRuby 1.7.4上的lib目錄。如何在rspec測試中包含lib目錄

我想測試位於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 

我似乎想要測試的文件沒有加載。請告訴我哪裏出錯了,我應該在哪裏糾正。

+0

嘗試從'spec_helper.rb'所在的目錄中使用'require_relative'和lib目錄中資源的路徑。像'require_relative「../ lib/vger」'而不是'require「vger」'ant等等。「 –

+0

@YevgeniyAnfilofyev它似乎不起作用。我試過require_relative'../lib/vger/'也require_relative'../lib/vger/resources/'並刪除了'Vger'的請求,並要求「vger/resources/account_manager」 –

+1

看到這個問題http:// stackoverflow。com/questions/11376718/require-lib-in-rspec-with-ruby-1-9-2 -with-such-file-to-load – toro2k

回答

2

RSpec的負載Rails環境,我記得,所以你只需要添加到自動加載目錄中的文件application.rb中

找到這一行

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

取消它解決它是這樣的:

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

它應該工作

+5

這不是一個rails項目。這是我在rails應用程序中使用的一個gem。所以,我想這不會起作用 –

+0

我認爲這將遞歸自動加載路徑?因此,例如,'/ lib/tasks'下的任何rake任務也將被加載? – Dennis

14

手動更新你在調用require之前,請在spec_helper.rb中載入PATH應用程序。試着做這個你spec_helper.rb的第一行:

$: << '../lib' 

$LOAD_PATH << '../lib' 

$:$LOAD_PATH的別名)

+0

我試過了。 /home/...../work/vger/lib似乎被加載,但仍然得到相同的錯誤 –

+1

'$:<< File.expand_path(「spec/lib」)'爲我工作 – amorphid

+4

考慮不使用' $:'這是非常神祕的,因爲'$ LOAD_PATH'對於輸入來說是非常無害的,所以你可以直接使用它。但包含+1。 – Csteele5

4

我用我的規格如下...依據你的lib在哪個級別...

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

+0

您可能希望通過更多的細節改進您的答案。其中一個評論有更多的信息可以包含在內。 – 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.

相關問題