6

ほぼすべての統合テストで、ユーザーは Devise にサインインする必要があります。これにはかなりの時間がかかるため、ログイン ページにアクセスして詳細を入力し、ログイン ボタンを押さなくても、ユーザー セッションを設定する方法はないかと考えました。

特定のユーザーをすぐにサインインさせるヘルパー メソッドが Devise に組み込まれているのではないでしょうか?

助けてくれてどうもありがとう。

4

1 に答える 1

16

スペック ファイルのヘッダーに、次のようにinclude Warden::Test::Helpersとを挿入します。Warden.test_mode!

require 'spec_helper'

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

describe "AuthenticationPages" do

let(:user) { FactoryGirl.create(:user) }

before { login_as(user, scope: :user }
...

上記のコードでは、FactoryGirl を使用してユーザーを作成しました。ユーザーを作成するには、他の方法を使用できます。user次に、 method を使用してログインしますlogin_as。その後、任意のテストを実行でき、ログインしていることを確認できますuser。これがあなたが望むものだと思います。これが役立つことを願っています。詳細はこちらTest with capybaraで確認できます。

編集

これが正しく機能することを確認するには、各テストの後に warden をリセットする必要があります。

Warden.test_reset! 

何らかの理由で、ログインしているテスト ユーザーをログアウトする必要がある場合は、Warden のログアウト ヘルパーを使用できます。

logout(:user)
于 2012-11-01T10:25:46.607 に答える