web-dev-qa-db-fra.com

Comment inclure le répertoire lib dans les tests rspec

J'ai un problème pour tester ma gemme qui inclut un répertoire lib, sur JRuby 1.7.4.

Je souhaite tester un fichier situé dans lib/vger/resources/account_manager.rb

Mon fichier de spécifications se trouve dans spec/vger/resources/account_manager_spec.rb

require 'spec_helper'

describe Vger::Resources::AccountManager do     
    .
    .
    end 
end

J'essaie d'inclure le fichier que je veux tester dans spec_helper.rb

require 'rubygems'
require 'bundler/setup'
require 'vger/resources/account_manager'
require 'vger'

RSpec.configure do |config|
  # some (optional) config here
end

Lors de l'exécution du test par la commande rspec spec/vger/resources/account_manager_spec.rb Je reçois cette erreur:

NameError: uninitialized constant Vger::Resources
    const_missing at org/jruby/RubyModule.Java:2631

Il semble que le fichier que je veux tester ne soit pas chargé. Veuillez me dire où je me trompe et où dois-je apporter des corrections.

29
Akash Khandelwal

Mettez à jour manuellement votre CHEMIN DE CHARGE dans spec_helper.rb avant d'appeler require devrait faire l'affaire. Essayez d'en faire la première ligne de votre spec_helper.rb:

$: << '../lib'

ou

$LOAD_PATH << '../lib'

($: est un alias pour $LOAD_PATH)

19
user117516

Vous pouvez ajouter la ligne suivante à votre .rspec fichier à la racine de l'application: -I lib

Il est également possible d'inclure des fichiers: -r lib/api.rb

Ces options sont décrites comme suit:

-JE CHEMIN

Spécifiez PATH à ajouter à $ LOAD_PATH (peut être utilisé plusieurs fois).

-r, --require PATH

Exiger un fichier.

7

J'utilise ce qui suit pour mes spécifications ... selon le niveau de votre bibliothèque ...

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

6
Stephane Paul

RSpec charge Rails environnement, si je me souviens bien, il vous suffit donc d'ajouter aux répertoires de chargement automatique dans votre fichier application.rb

Trouvez cette ligne

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

décommenter le corriger comme ceci:

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

ça devrait marcher

2
Ivan Shamatov