我正在將Rails 2.x應用程序轉換爲Rails 3.x。 Rails 2.x項目的規格目前全部通過執行。RSpec 1.x到RSpec 2.x(Rails 2.x到Rails 3.x)
但是,在將規格移至Rails 3.x應用程序後,規格無法找到在Rails.root + '/lib'
目錄中定義的基類(SmsCommand::Base
)。我試圖運行規格只有rspec path_to_spec
,rake spec
和bundle exec rspec path_to_spec
都無濟於事。
我擔心它可能與目錄嵌套有關。作爲一個例子:
/spec/models/sms_commands/accept_spec.rb
爲規範:被包含在
/app/models/sms_commands/accept.rb
的Accept
類從SmsCommand::Base
繼承:
/lib/sms_command.rb
它好像滑軌自動裝載機ISN」不會發生規格或它根本不自動加載/ lib目錄。
從rake spec
的輸出是:
/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)>'
我spec_helper
這是由每個規格要求具有以下相關行:(我曾試圖強迫問題與手動require
每個*.rb
在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'