2011-03-29 2 views
1

Je suis en train de convertir une application Rails 2.x en Rails 3.x. Les spécifications du projet Rails 2.x s'exécutent avec tous les passages actuellement.RSpec 1.x vers RSpec 2.x (Rails 2.x vers Rails 3.x)

Toutefois, après avoir déplacé les spécifications vers l'application Rails 3.x, les spécifications sont supprimées, ne trouvant pas de classe de base (SmsCommand::Base) définie dans le répertoire Rails.root + '/lib'. J'ai essayé d'exécuter les spécifications avec seulement rspec path_to_spec, rake spec et bundle exec rspec path_to_spec en vain.

Je suis préoccupé par le fait qu'il peut s'agir de l'imbrication de répertoire. A titre d'exemple:

/spec/models/sms_commands/accept_spec.rb 

est la spécification pour:

/app/models/sms_commands/accept.rb 

La classe Accept hérite de SmsCommand::Base qui est contenu à:

/lib/sms_command.rb 

Il semble que les rails autoloader n » t se passe pour specs ou c'est juste ne pas autoloading le répertoire/lib du tout.

La sortie de rake spec est:

/Users/xxx/.rvm/gems/[email protected]_project/gems/rspec-core 2.5.1/lib/rspec/core/backward_compatibility.rb:20: 
in `const_missing': uninitialized constant Object::SmsCommand (NameError) 
from /Users/xxx/Projects/a_project/app/models/sms_commands/accept.rb:2:in `<top (required)>' 

Mon spec_helper qui est requis par chaque spécification a les lignes pertinentes suivantes: (j'ai essayé de forcer la question avec le require manuel pour chaque *.rb dans le répertoire lib .)

ENV["RAILS_ENV"] ||= 'test' 
Dir[File.expand_path(File.join(File.dirname(__FILE__),'..', 'lib','**','*.rb'))].each {|f| require f} 
require File.expand_path(File.join(File.dirname(__FILE__),'..','config','environment')) 
#require 'spec/autorun' 
require 'spec/rails' 

Répondre

Questions connexes