我在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
我似乎想要测试的文件没有加载。请告诉我哪里出错了,我应该在哪里进行更正。
答案 0 :(得分:19)
在调用require
之前,应手动更新spec_helper.rb中的LOAD PATH。尝试将其作为spec_helper.rb的第一行:
$: << '../lib'
或
$LOAD_PATH << '../lib'
($:
是$LOAD_PATH
)的别名
答案 1 :(得分:7)
您可以将以下行添加到应用根中的.rspec
文件中:
-I lib
还可以包含文件:
-r lib/api.rb
这些选项描述如下:
-I PATH
指定要添加到$ LOAD_PATH的PATH(可以多次使用)。
-r, - 需要PATH
需要一个文件。
答案 2 :(得分:6)
我使用以下内容作为我的规格......取决于你的lib是哪个级别....
require_relative '../../lib/module'
答案 3 :(得分:1)
RSpec加载rails环境,我记得,所以你只需要在application.rb文件中添加自动加载目录
找到这一行
# config.autoload_paths += %W(#{config.root}/extras)
取消注释它修复它是这样的:
config.autoload_paths += %W(#{config.root}/lib)
它应该有用