32

lib在 JRuby 1.7.4 上测试包含目录的 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

我似乎没有加载我要测试的文件。请告诉我哪里出错了,我应该在哪里更正。

4

4 回答 4

21

在调用之前手动更新 spec_helper.rb 中的 LOAD PATHrequire应该可以解决问题。尝试将此作为您的 spec_helper.rb 的第一行:

$: << '../lib'

或者

$LOAD_PATH << '../lib'

$:是 的别名$LOAD_PATH

于 2013-06-06T13:23:40.677 回答
12

您可以将以下行添加到.rspec应用程序根目录中的文件中: -I lib

也可以包含文件: -r lib/api.rb

这些选项描述如下:

-I 路径

指定要添加到 $LOAD_PATH 的 PATH(可以多次使用)。

-r,--需要路径

需要一个文件。

于 2017-04-09T14:07:57.290 回答
7

I use the following for my specs...depending on which level your lib is....

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

于 2014-10-03T13:53:52.117 回答
1

我记得 RSpec 加载 rails 环境,所以你只需要添加到 application.rb 文件中的自动加载目录

找到这条线

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

取消注释它修复它是这样的:

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

它应该工作

于 2013-06-06T08:12:39.247 回答