Rails 3.1 および Rspec 2.7 から古い (1 年間休止中の) プロジェクトを Rails 3.2 および 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.
Web 検索では、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
ただし、未定義の変数であるというエラーが発生します。構造的な何かが変わったようですが、コントローラーテストからログインを達成する方法、または方法を見つけるのに苦労しています。