0

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ただし、未定義の変数であるというエラーが発生します。構造的な何かが変わったようですが、コントローラーテストからログインを達成する方法、または方法を見つけるのに苦労しています。

4

1 に答える 1

0

謝罪 - 私は最終的にこれについての説明を自分で見つけることができました.

問題は、以下を含む Gemfile にありました。

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

以前のバージョンの rspec では問題なく動作しましたが、現在はそうではありません。読み取るように変更することにより:

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

そして、bundle update上記の問題を魔法のように解決しました。

于 2012-11-18T07:39:17.033 に答える