Подтвердить что ты не робот

Как включить каталог 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

Кажется, что файл, который я хочу протестировать, не загружается. Скажите, пожалуйста, где я ошибаюсь, и где я должен исправлять.

4b9b3361

Ответ 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

Требовать файл.