Aka*_*wal 28 ruby testing rspec rspec-rails
我lib在JRuby 1.7.4上测试我的gem包含一个目录时遇到了问题.
我想测试位于的文件 lib/vger/resources/account_manager.rb
我的spec文件在 spec/vger/resources/account_manager_spec.rb
require 'spec_helper'
describe Vger::Resources::AccountManager do
.
.
end
end
Run Code Online (Sandbox Code Playgroud)
我试图包含我想要测试的文件 spec_helper.rb
require 'rubygems'
require 'bundler/setup'
require 'vger/resources/account_manager'
require 'vger'
RSpec.configure do |config|
# some (optional) config here
end
Run Code Online (Sandbox Code Playgroud)
在通过命令运行测试时,rspec spec/vger/resources/account_manager_spec.rb我收到此错误:
NameError: uninitialized constant Vger::Resources
const_missing at org/jruby/RubyModule.java:2631
Run Code Online (Sandbox Code Playgroud)
我似乎想要测试的文件没有加载.请告诉我哪里出错了,我应该在哪里纠正.
小智 19
Manually update your LOAD PATH in spec_helper.rb before calling require should do the trick. Try making this the first line of your spec_helper.rb:
$: << '../lib'
Run Code Online (Sandbox Code Playgroud)
or
$LOAD_PATH << '../lib'
Run Code Online (Sandbox Code Playgroud)
($: is an alias for $LOAD_PATH)
您可以.rspec在应用程序的根目录中将以下行添加到您的文件中:
-I lib
它也可以包含文件:
-r lib/api.rb
这些选项描述如下:
-I PATH
指定要添加到$ LOAD_PATH的PATH(可以多次使用).
-r, - 需要PATH
需要一个文件.
小智 1
我记得,RSpec 加载 Rails 环境,因此您只需添加到 application.rb 文件中的自动加载目录
找到这一行
# config.autoload_paths += %W(#{config.root}/extras)
Run Code Online (Sandbox Code Playgroud)
取消注释将其修复为如下所示:
config.autoload_paths += %W(#{config.root}/lib)
Run Code Online (Sandbox Code Playgroud)
它应该有效