capybaraを使ったインテグレーションテストでdeviseのログインをする

deviseを使っていると認証系の実装はすごく楽ができていいけど、どうしてもテストコードでは謎コードを書かないといけない。
そしてバージョンによって、ログイン状態を実現する書き方が違うっぽい。

環境

Rails3.2
capybara (2.0.2)
factory_girl_rails (4.2.1)
devise (2.2.3)

書き方

spec_helper.rbのrequireの下あたりにペースト。

include Warden::Test::Helpers
Warden.test_mode!

テストコードに以下を書けばログイン状態になる。

user = Factory.create(:user)
login_as(user, :scope => :user)