Как включить каталог lib в тесте rspec
У меня возникла проблема с тестированием моего драгоценного камня, который включает каталог lib
, на JRuby 1.7.4.
Я хочу протестировать файл, расположенный в lib/vger/resources/account_manager.rb
Мой spec файл находится в 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
Кажется, что файл, который я хочу протестировать, не загружается. Скажите, пожалуйста, где я ошибаюсь, и где я должен исправлять.
Ответы
Ответ 1
Вручную обновить LOAD PATH в spec_helper.rb перед вызовом require
должен сделать трюк. Попробуйте сделать это первой строкой вашего spec_helper.rb:
$: << '../lib'
или
$LOAD_PATH << '../lib'
($:
является псевдонимом для $LOAD_PATH
)
Ответ 2
Я использую следующие для своих спецификаций... в зависимости от того, на каком уровне ваша библиотека...
require_relative '../../lib/module'
Ответ 3
RSpec загружает среду рельсов, как я помню, поэтому вам просто нужно добавить в автозагрузку каталоги в файле application.rb
Найти эту строку
# config.autoload_paths += %W(#{config.root}/extras)
раскомментировать его, чтобы он был таким:
config.autoload_paths += %W(#{config.root}/lib)
он должен работать
Ответ 4
Вы можете добавить следующую строку в свой .rspec
файл в корне приложений:
-I lib
Можно также включить файлы:
-r lib/api.rb
Эти параметры описываются следующим образом:
-I PATH
Укажите PATH для добавления в $LOAD_PATH (может использоваться более одного раза).
-r, --require PATH
Требовать файл.