2012-11-17 58 views
0

我試圖從Rails 3.1和Rspec 2.7升級舊的(休眠1年)項目到Rails 3.2和Rspec 2.12。從rspec 2.7升級到rspec的問題2.12

初始升級到Rails 3.2了罰款和應用程序的工作,但Rspec的下運行的測試產生大量的警告一下:

DEPRECATION WARNING: The InstanceMethods module inside ActiveSupport::Concern 
will be no longer included automatically. Please define instance methods 
directly in RSpec::Rails::TestUnitAssertionAdapter instead. 

網絡搜索提示升級到Rspec的2.8,因爲這顯然是一個問題在2.7中已經修復。我讓「捆綁更新」帶我一路到最新版本(2.12.0),但現在測試哪些工作在2.7將不會運行在2.12以下

問題出現在控制器測試,當他們嘗試僞造登錄(幾乎所有的控制器操作都要求您在做任何事情之前先登錄)。

以前這被通過該方法在spec_helper.rb

def test_login(user) 
    controller.sign_in(user) 
end 

app/helpers/sessions_helper.rb調用的方法來執行實際的登錄來實現。

但是現在它得到一個關於controller是一個未定義的變量的錯誤。結構似乎已經發生了變化,但我正在努力發現什麼,或者如何從控制器測試中實現登錄。

回答

0

道歉 - 我最終設法找到了自己的解釋。

group :development do 
    gem 'rspec-rails', '>= 2.8.0' 
end 

這工作得很好與早期版本的RSpec的,但不是現在:

的問題,其中包含的Gemfile奠定。通過改變它來閱讀:

group :test, :development do 
    gem 'rspec-rails', '>= 2.8.0' 
end 

,然後做一個bundle update上面介紹的問題奇蹟般地走了。